утечки памяти
От: Antonidze Россия  
Дата: 27.05.05 08:07
Оценка:
В процессе тестирования программы обнаружилось, что выделенная память освобождается не сразу, как ожидается, а где-то в конце программы. Причём, утечек, как таковых, нет: _CrtDumpMemoryLeaks() перед выходом из main показывает, что всё чисто. Почитав статьи, посвящённые методам борьбы с утечками, подумал, что мне может помочь _CrtMemCheckpoint.

Делаю так:
init();

_CrtMemState s1, s2, s3;

_CrtMemCheckpoint( &s1 );
test(); // вся память, выделяемая в test(), должна в нём же и освобождаться
_CrtMemCheckpoint( &s2 );

if ( _CrtMemDifference( &s3, &s1, &s2) )
  _CrtMemDumpStatistics( &s3 );

cleanup(); // судя по всему, вся неосвобождённая до сих пор память освобождается здесь

Имею следующее:
0 bytes in 0 Free Blocks.
68 bytes in 3 Normal Blocks.
0 bytes in 0 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 68 bytes.
Total allocations: 184293 bytes.

Т.е. где-то что-то не освобождается

Можно ли как-нибудь узнать адреса этих неосвобождёных блоков памяти?
Если нет, то что ещё можно предпринять для локализации проблемного места в коде?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.