Вопрос касается C++11, использования auto
в подобной структуре:
auto array = new int[20];
Нужно ли в данном случае вызывать delete []
для array, или деструктор умного указателя о нем позаботится сам?
По крайней мере данный код работает (вместо типа int
я использовал структуру).
В данном случае auto
- указатель, так что ни о каком умном указателе речь не идет.
Там, где вы использовали структуры - вряд ли у вас вызывались деструкторы.
Вот, чтоб убедиться:
#include <iostream>
#include <iomanip>
using namespace std;
class Test {
public:
Test() { cout << "Test()\n"; }
~Test() { cout << "~Test()\n"; }
};
int main()
{
auto t = new Test[5];
}
Вызываются только конструкторы, так что имеем обычную утечку памяти :)
Никакого отношения к "умным указателям" данный auto
не имеет. В данном случае вы получите обычный "голый" указатель, у которого нет никакого деструктора. Освобождение памяти через delete[]
так же необходимо, как и обычно, и это - ваша задача.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Разработать класс реализующий список (однонаправленное кольцо)Элемент списка содержит информацию о товаре на складе фирмы
Реально ли для объектов этого класса использовать перегрузку оператора + (суммы?) и как это сделать? и имеет ли смысл?
Какие есть типы данных в С++? Кто мог бы логически расставить по местам? Есть стандартные типы (int, double
Ребята, может кто знает, какие в android нужны permissions для чтения файлов других приложений в /data/data/%appname% ?