我的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