Поделиться через


Управление памятью: выделение кадров

Выделение во фрейме принимает имя» из «кадра стека, настроенный при функции. Кадр стека область памяти, временно содержит аргументы функции так же, как и переменные, указанный локальный функции. Переменные фрейма называются «для» переменными, потому что компилятор автоматически выделяет место для них.

2 Ключевых характеристик выделений кадра. Во-первых, при определении локальной переменной, достаточно ли места установлен в кадре стека для хранения всей переменная, даже если большие массив или структуру данных. Во-вторых, переменные фрейма, автоматически удаляются, когда они находятся вне области:

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

Для переменных локальной области функции этот переход происходит, когда функция покидает область переменной фрейма, но может быть больше, чем небольшая функции, вложенных скобок используются. Это автоматическое удаление переменной фрейма очень важно. В случае простых простых типов (например, int или byte), массивы и структуры данных, автоматическое удаление просто исправления память, переменной. Поскольку переменная шла за пределами области действия, ее нельзя получить как есть. В случае объектов C++, однако процесс автоматического удаления несколько осложнятьле.

Если объект указан как переменной фрейма, вызывают его конструктора автоматически в точке определения обнаруживается. Когда объект выходит за пределы области, его деструктор автоматически вызывается до выполнения освобождение памяти для объекта. Эти автоматические построение и уничтожение могут быть очень сподручны, но следует иметь в виду автоматического вызова, особенно в деструктора.

Основное преимущество выделения объектов в кадре, что они автоматически удаляются. При размещении объекты в кадре, можно не беспокоиться об объектах забытых вызывает утечки памяти. (Дополнительные сведения о утечках памяти см. в статье Обнаружение утечек памяти в MFC). Недостаток выделения кадра, что переменные фрейма нельзя использовать их за пределами области. Другим фактором при выборе выделение кадра и выделения памяти, для больших структур и объекты, зачастую лучше использовать кучу вместо стека для хранилища, поскольку пространство стека часто ограничено.

См. также

Основные понятия

Управление памятью