В следующем фрагменте кода есть утечка памяти, которую я потратил слишком много времени на поиски. Проблема в том, что внутри Foo () локальная переменная x_ скрывает переменную-член x_. Это тоже довольно раздражает, потому что компилятор мог предупредить меня об этом. Есть ли в GCC флаг для такого предупреждения? (Для любопытных: я пришел к ошибочному коду, используя сначала локальную переменную, затем изменив ее на переменную-член, но забыв удалить объявление типа.)
struct A {
A() x_(NULL) {}
~A() {
delete x_;
}
void Foo() {
HugeThingy* x_ = new HugeThingy();
x_->Bar("I. Need. Garbage. Collection. Now.");
}
HugeThingy* x_;
DISALLOW_COPY_AND_ASSIGN(A); // Macro to prevent copy/assign.
}