Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menjelaskan bagaimana MFC melakukan alokasi bingkai dan alokasi timbunan untuk masing-masing dari tiga jenis alokasi memori yang khas:
Alokasi Array dari Bita
Untuk mengalokasikan array byte di dalam bingkai
Tentukan array seperti yang ditunjukkan oleh kode berikut. Array dihapus secara otomatis dan memorinya diklaim kembali ketika variabel array keluar dari cakupannya.
{ const int BUFF_SIZE = 128; // Allocate on the frame char myCharArray[BUFF_SIZE]; int myIntArray[BUFF_SIZE]; // Reclaimed when exiting scope }
Untuk mengalokasikan array byte (atau jenis data primitif apa pun) pada timbunan
newGunakan operator dengan sintaks array yang ditunjukkan dalam contoh ini:const int BUFF_SIZE = 128; // Allocate on the heap char* myCharArray = new char[BUFF_SIZE]; int* myIntArray = new int[BUFF_SIZE];
Untuk membatalkan alokasi array dari tumpukan
deleteGunakan operator sebagai berikut:delete[] myCharArray; delete[] myIntArray;
Alokasi Struktur Data
Untuk mengalokasikan struktur data pada bingkai
Tentukan variabel struktur sebagai berikut:
struct MyStructType { int topScore; }; void MyFunc() { // Frame allocation MyStructType myStruct; // Use the struct myStruct.topScore = 297; // Reclaimed when exiting scope }Memori yang ditempati oleh struktur diklaim kembali ketika keluar dari cakupannya.
Untuk mengalokasikan struktur data pada heap
Gunakan
newuntuk mengalokasikan struktur data pada tumpukan dandeleteuntuk membatalkan alokasinya, seperti yang ditunjukkan oleh contoh berikut:// Heap allocation MyStructType* myStruct = new MyStructType; // Use the struct through the pointer ... myStruct->topScore = 297; delete myStruct;
Alokasi dari sebuah Objek
Untuk mengalokasikan objek pada bingkai
Deklarasikan objek sebagai berikut:
{ CMyClass myClass; // Automatic constructor call here myClass.SomeMemberFunction(); // Use the object }Destruktor untuk objek secara otomatis dipanggil ketika objek keluar dari cakupannya.
Untuk mengalokasikan objek pada timbunan
Gunakan operator
new, yang mengembalikan penunjuk ke objek, untuk mengalokasikan objek pada heap.deleteGunakan operator untuk menghapusnya.Contoh heap dan frame berikut mengasumsikan bahwa
CPersonkonstruktor tidak memerlukan argumen.// Automatic constructor call here CMyClass* myClass = new CMyClass; myClass->SomeMemberFunction(); // Use the object delete myClass; // Destructor invoked during deleteJika argumen untuk
CPersonkonstruktor adalah pointer kechar, pernyataan untuk alokasi frame adalah:CMyClass myClass("Joe Smith");Pernyataan untuk alokasi timbunan adalah:
CMyClass* myClass = new CMyClass("Joe Smith");