в том смысле, если объекты создавать в заранее подготовленном пуле и потом его убивать - то это как бы нет утечки памяти. да, это так. но в этой памяти создавались объекты и важно, чтобы их деструкторы вызывались.
так вот, просто возвращение памяти системе не вызовет эти деструкторы. а значит что-то может утечь, попимо памяти. например синзронизирующие объекты остались в занятом состоянии (освобождаются в теле деструтора), дескрипторы файлов или еще чего-то тоже не освобождены (освобождаются в теле деструктора) и т.д.
Ну и я не понял, как на это повлияет этот макрос. Автор ведь его закомментировал и создает объекты в заранее выделенном буфере памяти.
вот такой классик тоже приведет к утечке, если деструктор не позовется:
C++ |
1
2
3
4
| class Class
{
std::string str;
} |
|
ведь буффер, выделяемый внутри std::string создается не в пуле, а в общем месте до тех пор, пока там аллокатор нужный не подсунут или оператор new не перепишут или хз что еще не сделают.