Здравствуйте, Аноним, Вы писали:
А>Если память выделяется динамически — утечка есть. Если не динамически, то утечки нет. Чтобы включить/выключить используйте макрос 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 );
Все ОК, что выделили, то и удалили