Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés:
A Microsoft Foundation Classes (MFC) könyvtár továbbra is támogatott. A továbbiakban azonban nem adunk hozzá funkciókat, és nem frissítjük a dokumentációt.
Ez a cikk azt ismerteti, hogyan hajtja végre az MFC a keretlefoglalásokat és a halomfoglalásokat a memórialefoglalások három tipikus típusához:
Bájttömb lefoglalása
Bájttömb lefoglalása a kereten
Adja meg a tömböt az alábbi kódban látható módon. A rendszer automatikusan törli a tömböt, és a rendszer visszanyeri a memóriáját, amikor a tömbváltozó kilép a hatóköréből.
{ const int BUFF_SIZE = 128; // Allocate on the frame char myCharArray[BUFF_SIZE]; int myIntArray[BUFF_SIZE]; // Reclaimed when exiting scope }
Bájttömb (vagy bármilyen primitív adattípus) lefoglalása a halomon
Használja az operátort
newa példában látható tömbszintaxissal:const int BUFF_SIZE = 128; // Allocate on the heap char* myCharArray = new char[BUFF_SIZE]; int* myIntArray = new int[BUFF_SIZE];
A tömbök felszabadítása a halomból
Használja a
deleteoperátort az alábbiak szerint:delete[] myCharArray; delete[] myIntArray;
Adatstruktúra lefoglalása
Adatstruktúra lefoglalása a keretben
Adja meg a struktúraváltozót az alábbiak szerint:
struct MyStructType { int topScore; }; void MyFunc() { // Frame allocation MyStructType myStruct; // Use the struct myStruct.topScore = 297; // Reclaimed when exiting scope }A struktúra által elfoglalt memória felszabadul, amikor kilép a hatóköréből.
Adatstruktúrák lefoglalása a halomra
Használja a
newa halom adatstruktúráinak lefoglalására, és adeleteazok felszabadítására, ahogy az alábbi példák is szemléltetik.// Heap allocation MyStructType* myStruct = new MyStructType; // Use the struct through the pointer ... myStruct->topScore = 297; delete myStruct;
Objektum hozzárendelése
Objektum lefoglalása a kereten
Deklarálja az objektumot az alábbiak szerint:
{ CMyClass myClass; // Automatic constructor call here myClass.SomeMemberFunction(); // Use the object }Az objektum destruktorát a rendszer automatikusan meghívja, amikor az objektum kilép a hatóköréből.
Objektum lefoglalása a halomra
Az
newoperátort, amely egy objektumra mutat, használja az objektumok halomra történő lefoglalásához. Adeleteoperátort használva törölheti őket.Az alábbi halom- és keretes példák feltételezik, hogy a
CPersonkonstruktor nem vesz fel argumentumokat.// Automatic constructor call here CMyClass* myClass = new CMyClass; myClass->SomeMemberFunction(); // Use the object delete myClass; // Destructor invoked during deleteHa a
CPersonkonstruktor argumentuma egy mutató achar-ra, akkor a keretfoglalási utasítás a következő:CMyClass myClass("Joe Smith");A halomfoglalásra vonatkozó utasítás a következő:
CMyClass* myClass = new CMyClass("Joe Smith");