Страница 1 из 1

Нужно ли удалять AnsiString в структуре?

Добавлено: 27 авг 2007, 13:43
Ivan093
Добрый день!

Есть у меня структура с разными полями, есть там так же поле AnsiString. У структуры нет деструктора.
При удалении структуры надо ли делать delete для поля AnsiString или оно корректно удалится при удалении всей структуры?

Re: Нужно ли удалять AnsiString в структуре?

Добавлено: 27 авг 2007, 14:04
Absurd
Слабо тест написать? К тому же, в ВСВ наверняка есть детектор memory leaks.

Код: Выделить всё

#include <iostream>
#include <memory>

struct Bar {
	Bar(int i, int j)
		:_i(i)
		,_j(j)
	{}
	~Bar()
	{
		std::cout<<"Destrictor called\n";
	}
private:
	const int _i;
	const int _j;
};


struct Foo {
	std::auto_ptr<Bar> _bar_ptr;
};

int main(int argc, char** argv) {
	Foo foo;
	foo._bar_ptr.reset(new Bar(13, 666));
	return 0;
}
Выдает что destructor called. Хотя и нафига иметь AnsiString в структуре - либо пишем на С либо на С++.