void __fastcall TForm1::FormCreate(TObject *Sender)
{
hh=HeapCreate(0,0x01000,0);
if(hh==NULL){MessageBox(0,"!","!",MB_OK);}
}
..........................................................................
void __fastcall TForm1::Button3Click(TObject *Sender)
{
char *buf=(char*)HeapAlloc(hh,0,1024*1024);
if(buf==NULL){MessageBox(0,"!","!",MB_OK);}
strcpy(buf,"sdjbksadbvkjlbsdkvljbsdkjbvkjsdabvkjasdbkvjbasdkjvbsakjbvkjslb");
MessageBox(Form1->Handle,buf,"!",MB_OK);
HeapFree(hh,0,buf);
}
Где утечка памяти?
Код:
С каждым нажатием кнопки отоборажаемое количество занимаемой памяти программой в диспетчере задач увеличивается на 4 килобайта.
Ради интереса вопрос:Где течет?
Цитата: _nic
С каждым нажатием кнопки отоборажаемое количество занимаемой памяти программой в диспетчере задач увеличивается на 4 килобайта.
Ради интереса вопрос:Где течет?
Ради интереса вопрос:Где течет?
Ну так отрываем лапки у таракана и ищем орган слуха. Ремарим все в событии кнопки и смотрим. Разремарим мессагу (тока там без буфера что то пропишем просто строкой ) и смотрим. Ну и так далее.
Я глянул в winnt.h - там вроде у разрешенных параметров ненулевые значения...может, в этом дело?
Дело в том что не всегда память из кучи возвращается в ОС, во вторых - мониторить при помощи ДЗ можно только явные (и большие) утечки памяти. А наблюдаемый вами эффект - следствие прерисовки окна и т.п.