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

Модераторы: Romeo, Hawk, Absurd, WinMain, DeeJayC

Ответить
Ivan093
Сообщения: 54
Зарегистрирован: 28 июн 2007, 13:59
Откуда: Екатеринбург
Контактная информация:

27 авг 2007, 13:43

Добрый день!

Есть у меня структура с разными полями, есть там так же поле AnsiString. У структуры нет деструктора.
При удалении структуры надо ли делать delete для поля AnsiString или оно корректно удалится при удалении всей структуры?
Absurd
Сообщения: 1213
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

27 авг 2007, 14:04

Слабо тест написать? К тому же, в ВСВ наверняка есть детектор 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 в структуре - либо пишем на С либо на С++.
2B OR NOT(2B) = FF
Ответить