Tulis aplikasi Delphi yang tidak menyebabkan crash pada alokasi sumber daya
Kuncinya adalah memastikan bahwa jika sumber daya dialokasikan dalam program, bahkan ketika terjadi kegagalan, program tersebut
Program ini juga harus mampu melepaskan sumber daya yang ada.
File, memori, sumber daya WINDOWS, dan objek adalah beberapa yang harus ditambahkan dari waktu ke waktu
Berhati-hatilah untuk memastikan bahwa sumber daya dilepaskan. Dalam contoh kode kontrol acara berikut
Memori dialokasikan terlebih dahulu, dan kemudian terjadi kesalahan, menyebabkannya tidak lagi dijalankan.
Kode program untuk melepaskan memori:
PROSEDURTFormulir1. ButtonlClick(Pengirim:Tobject
);
Var
Penunjuk1: Penunjuk;
Integer1,Numzero:Intger;
mulai
Angka nol:Κ0;
GetMem(Pointer1, 1024); {Alokasikan 1K sumber daya memori}
Integer1: Κ5divNumzero; {Kalimat ini menghasilkan kesalahan pembagian
kesalahan}
FreeMem (Pointer1, 1024); {Kalimat ini tidak akan dieksekusi di sini
Oke}akhir;
Meskipun sebagian besar kesalahan tidak sejelas ini, contoh di atas berisi hal-hal penting
Satu hal: ketika terjadi kesalahan, eksekusi program keluar dari modul, dan sumber daya berikutnya dilepaskan.
Kode program tidak lagi dijalankan. Untuk memastikan bahwa FreeMem pada contoh di atas bisa
Untuk melepaskan sumber daya memori yang ditempati oleh GetMem, kode harus dimasukkan ke dalam sumber daya
modul perlindungan.
Berikut adalah format modul perlindungan sumber daya melengkung:
{Alokasi sumber daya}
mencoba
{Penggunaan sumber daya}
Akhirnya
{Pelepasan sumber daya}
akhir;
Coba di atas. . . Modul akhirnya memungkinkan program untuk selalu mengeksekusi fi
akhirnya kode program apa pun di bagian tersebut, meskipun ada kesalahan pada modul yang dilindungi
diproduksi di. Ketika sepotong kode di bagian coba menyebabkan kesalahan saat dijalankan, jalankan
Garis akan langsung melompat ke bagian akhirnya; jika tidak ada kesalahan yang terjadi selama eksekusi
Program dijalankan dalam urutan normal.
Dalam contoh kode kontrol kejadian berikut, memori dialokasikan terlebih dahulu, baru kemudian
Terjadi kesalahan, namun kode program yang melepaskan memori masih dijalankan:
ProsedurTFormulir1. Button1Click(Pengirim:Tobject
);
Var
Penunjuk1: Penunjuk;
Integer1,Numzero:Integer;
mulai
Angka nol:Κ0;
GetMem(Pointer1, 1024); {Alokasikan 1K sumber daya memori}
mencoba
Integer1: Κ5divNumzero; {Kalimat ini menghasilkan kesalahan pembagian
kesalahan}
Akhirnya
FreeMem(Pointer1,1024);{Di sini kalimat ini akan tetap dieksekusi
OKE}
akhir;
akhir;
Bagaimana memastikan bahwa program melepaskan sumber daya yang digunakan merupakan isu penting dalam pemrograman.
Ini adalah masalah yang sangat penting yang harus dipraktikkan dan diperhatikan selama pemrograman.