В моем классе C++ есть деструктор, который пытается удалить переменные экземпляра std :: vector и std :: array.не может удалить std :: vector & std :: array?
#include <iostream>
#include <vector>
#include <array>
int main()
{
std::array<int, 3> foo;
std::vector< std::array<float, 4> > vertices;
foo[0] = 1;
foo[1] = 2;
foo[2] = 3;
std::cout << foo[0] << std::endl;
delete foo;
delete vertices;
return 0;
}
Я не уверен, как правильно освободить память - почему я не могу удалить эти переменные?
clang++ -std=c++11 -stdlib=libc++ -Weverything ccc.cpp
ccc.cpp:14:2: error: cannot delete expression of type 'std::array<int, 3>'
delete foo;
^ ~~~
ccc.cpp:15:2: error: cannot delete expression of type 'std::vector<std::array<float, 4>
>'
delete vertices;
^ ~~~~~~~~
ccc.cpp:18:2: warning: C++98 requires newline at end of file [-Wc++98-compat-pedantic]
}
^
Вы ничего не выделяете с помощью 'new', почему вы чувствуете желание освободить что-то с помощью' delete'? Это автоматические переменные - они автоматически уничтожаются, когда они выходят за рамки. –
, даже если они являются переменными-экземплярами-членами в классе? – ejang
Да, у членов класса нет скрытого «нового». – chris