У вас есть что-то вроде
class B
{
A * a;
}
B * b = new B;
b->a = new A;
. Если вы затем вызываете delete b;
, ничего не происходит с a, и у вас есть утечка памяти. Попытка запомнить delete b->a;
не является хорошим решением, но есть пара других.
B::~B() {delete a;}
Это деструктор для B, который удалит a. (Если a равно 0, это удаление ничего не делает. Если a не является 0, но не указывает на память от нового, вы получаете повреждение кучи.)
auto_ptr<A> a;
...
b->a.reset(new A);
Таким образом, у вас нет как указатель, а скорее auto_ptr & lt;> (shared_ptr & lt;> будет делать также или другие интеллектуальные указатели), и он автоматически удаляется, когда b.
Любой из этих способов работает хорошо, и я Вы использовали оба.
Под Предпочтениями , выберите Java -> , Редактор -> Сохраняют Действия . Проверьте , Выполняют выбранные действия с сохранением и устанавливают флажок Format source code .
Это может или не может быть доступно в предыдущих версиях Eclipse. Я знаю, что это работает в:
Version: 3.3.3.r33x_r20080129-_19UEl7Ezk_gXF1kouft<br>
Build id: M20080221-1800
Я настоятельно рекомендую проверить Ваш формат затмения xml дескриптор в управление исходным кодом. Тем путем все члены команды могут использовать его, и Вы не получаете туда и сюда переформатировавшие сражения.
Если вы обнаружите, что у вас нет предпочтения Сохранить действия в Java -> Редактор , это может быть потому что вы используете старую версию Eclipse. В этом случае вы можете установить плагин Format on save из здесь .
Затем в Preferences выберите Java -> Format on сохранить . Выберите параметр Формат выполнения в разделе Выберите действие форматирования кода