C Academy · Pelajaran

Ralat Masa Jalan yang Biasa

Kenal pasti dan cegah kesalahan pembahagian, limpahan penimbal dan kebocoran memori.

Pelajaran 2 daripada 310 langkah

Ralat Masa Jalan yang Biasa ialah pelajaran C Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 3. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C Academy merangkumi sejumlah 3 pelajaran.

Ralat Masa Jalan yang Biasa dalam C

Ralat masa jalan berlaku apabila atur cara mengalami tingkah laku yang tidak dijangka dan sering menyebabkan atur cara terhenti.

Dalam pelajaran ini, anda akan mempelajari:

  • Cara kerosakan pembahagian berlaku dan cara membaikinya.
  • Cara limpahan penimbal menyebabkan kelemahan keselamatan.
  • Cara kebocoran memori menjejaskan prestasi dan cara mengelakkannya.
Ralat Masa Jalan yang Biasa — ilustrasi 1

Apakah Kerosakan Pembahagian?

Kerosakan pembahagian berlaku apabila atur cara cuba mengakses memori yang tidak dibenarkan untuk diaksesnya.

Punca:

  • Menyahrujuk penuding yang belum dimulakan atau NULL.
  • Mengakses memori melebihi sempadan tatasusunan.
  • Mengubah suai memori baca sahaja.

Contoh: Kerosakan Pembahagian

Atur cara ini menyebabkan kerosakan pembahagian dengan menyahrujuk penuding NULL.

#include <stdio.h>

int main() {
    int *ptr = NULL;
    printf("%d\n", *ptr); // Segmentation fault
    return 0;
}

Mencegah Kerosakan Pembahagian

Petua untuk mengelakkan kerosakan pembahagian:

  • Sentiasa mulakan penuding sebelum menggunakannya.
  • Semak sama ada penuding ialah NULL sebelum menyahrujuknya.
  • Gunakan semakan sempadan tatasusunan.

Apakah Limpahan Penimbal?

Limpahan penimbal berlaku apabila data melebihi ruang memori yang diperuntukkan.

Contoh:

char arr[5]; gets(arr);

Keadaan ini boleh menyebabkan tingkah laku yang tidak dapat diramalkan dan kelemahan keselamatan.

Contoh: Limpahan Penimbal

Atur cara ini menunjukkan limpahan penimbal menggunakan gets().

#include <stdio.h>

int main() {
    char buffer[5];
    printf("Enter a string: ");
    gets(buffer); // Unsafe, may cause buffer overflow
    printf("You entered: %s\n", buffer);
    return 0;
}

Mencegah Limpahan Penimbal

Untuk mencegah limpahan penimbal:

  • Gunakan fgets() dan bukannya gets().
  • Sahkan saiz input sebelum menulis ke dalam tatasusunan.
  • Gunakan fungsi yang selamat terhadap memori seperti snprintf().

Kebocoran Memori

Kebocoran memori berlaku apabila memori yang diperuntukkan tidak dibebaskan, lalu menyebabkan pembaziran memori.

Punca:

  • Terlupa menggunakan free() selepas malloc().
  • Menulis ganti penuding tanpa membebaskan peruntukan lama.

Ringkasan

Dalam pelajaran ini, anda telah mempelajari:

  • Cara kerosakan pembahagian berlaku dan cara mencegahnya.
  • Cara limpahan penimbal menyebabkan isu keselamatan.
  • Cara kebocoran memori membazirkan sumber sistem.

Seterusnya, kita akan meneroka strategi pengendalian pengecualian dalam C!

Ralat Masa Jalan yang Biasa — ilustrasi 10
Percuma untuk bermula

Pelajari C dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
39
Pelajaran
144

Soalan Lazim

Adakah pelajaran “Ralat Masa Jalan yang Biasa” percuma?

Ya — teks penuh “Ralat Masa Jalan yang Biasa” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus C Academy, tingkat taraf kepada CoddyKit PRO. Kursus C Academy merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Ralat Masa Jalan yang Biasa”?

Kenal pasti dan cegah kesalahan pembahagian, limpahan penimbal dan kebocoran memori. Anda berlatih C Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 3.

Berapa lamakah pelajaran “Ralat Masa Jalan yang Biasa” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C Academy ini?

Ya. Setiap pelajaran C Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penyahpepijatan dengan GDB
  2. Ralat Masa Jalan yang Biasa
  3. Pengendalian Pengecualian dalam C
← Kembali ke C Academy