Re: Почему этот код не вызывает утечку памяти?
От: Mephisto666 Великобритания  
Дата: 28.07.09 07:06
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Если память выделяется динамически — утечка есть. Если не динамически, то утечки нет. Чтобы включить/выключить используйте макрос USE_DYNAMIC_ALLOC. Деструктор специально не виртуальный, для того чтобы вызывать утечку.


Vain правильно сказал. Во втором случае нет динамической аллокации, поэтому и утечек нет (нечего де-аллоцировать).

порядок вызовов с дефайном:

ptr = allocate( sizeof(B) ); // sizeof(b) = 4
allocate( 1<<20 bytes ); // memory allocated here will never be released
deallocate( ptr );

без дефайна:

ptr = allocate( sizeof(B) ); // sizeof(b) = 1<<20
deallocate( ptr );


Все ОК, что выделили, то и удалили
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.