Sdílet prostřednictvím


Správy paměti: Rámeček přidělení

Přidělením na snímku jeho název z "zásobníku rámce", který je při každém volání funkce.Snímek zásobníku je oblast paměti obsahující dočasně argumenty funkce, jakož i všech proměnných, které jsou definovány místní funkce.Rámeček proměnné jsou často nazývány "Automatické" proměnné, protože kompilátor automaticky přidělí místo pro ně.

Existují dvě klíčové vlastnosti rozdělení rámce.Nejprve při definování místní proměnné dostatek místa je přiděleno snímek zásobníku držet celý proměnné i v případě, že je velká pole nebo data struktury.Za druhé rámečku proměnné automaticky odstraněny při přístupu mimo rozsah:

void MyFunction()
{
    // Local object created on the stack
    CString strName;
    // Object goes out of scope and is deleted as function ends
}

Funkce místní proměnné přechod tohoto oboru se stane při východy funkce, ale rozsah proměnné rámeček může být menší než funkce při použití vnořených závorek.Toto automatické odstranění rámečku proměnné je velmi důležité.Z jednoduché primitivní typy (například int nebo bajt), matice nebo struktury dat, automatické odstranění jednoduše uvolňuje volné paměti používané proměnné.Protože proměnná dostal mimo rozsah, nelze přesto přistupovat.U objektů C++ proces automatického odstranění je však o něco složitější.

Když objekt je definována jako proměnné rámce, jeho konstruktoru je automaticky vyvoláno v místě, kde došlo k definici.Když se objekt dostane mimo rozsah, jeho destruktoru dříve, než je požadovaná paměť pro objekt automaticky vyvolán.Tato automatická konstrukce a zničení může být velmi užitečné, ale musí být informováni o automatické volání, zejména se objekt.

Klíčovou výhodou rozdělování objektů na snímku je, že automaticky odstraněny.Při přidělování objekty na rámečku nemusíte obávat zapomenutí objekty způsobuje nevracení paměti.(Podrobnosti o nevracení paměti, naleznete v článku Detekce nevrácení paměti v MFC.) Nevýhodou přidělení rámeček je rámeček proměnné nelze mimo jejich působnost.Dalším faktorem při výběru rámečku přidělení versus přidělení haldy je velkých struktur a objektů je často lepší použití haldy místo v zásobníku úložiště od místa v zásobníku je často omezena.

Viz také

Koncepty

Správa paměti