Форум: "Основная";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
ВнизРазмещение в памяти Найти похожие ветки
← →
Sers (2002-10-29 12:18) [0]Что-то я запутался.
Если я делаю так:
procedure MyProcedure;
var edit : TEdit;
begin
edit:=TEdit.Create(nil);
end;
1. Где отводится память под edit - в динамической памяти, или в стеке ?
2. Соответственно, при выходе из процедуры, память освободится или нет ?
← →
Anatoly Podgoretsky (2002-10-29 12:27) [1]Под ссылку в стеке, а остальное может быть в разных местах, что есть динамическая память, осводится только место под ссылку.
← →
MBo (2002-10-29 12:29) [2]не освободится, только ссылка потеряется
← →
Sers (2002-10-29 12:33) [3]То есть, как я понял при входе в процедуру в стеке отводится под ссылку память. При
edit:=TEdit.Create(nil);
под объект выделяется еще память.
При выходе из процедуры память занятая в стеке под ссылку освобождается, а та память, которая была выделена под объект не освобождается. То есть, это так называемая утечка памяти.
Я правильно понял ?
← →
MBo (2002-10-29 12:35) [4]Да, абсолютно
← →
Anatoly Podgoretsky (2002-10-29 12:42) [5]Абсолютно, а что бы этого не происходило - освобождай
← →
Sers (2002-10-29 12:47) [6]В принципе я так и подозревал. Дело в том, я решил попробовать Bounds Checker v6.03 По идее, он должен отлавливать такие моменты. Если я подсовываю ему прогу откомпилированную C++ Builder"ом то все нормально - он замечет такие вещи. С прогой, откомпилированной с помощью Дельфи - не фига.
Может Bounds Checker не может работать с exe-шниками, полученными Дельвей.
В ProjectOptions-> Include DebugInformation галочка стоит, оптимизауия отключена, в чем же дело ?
← →
VaS (2002-10-29 12:52) [7][x] Include TD32 debug info
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c