我有一个包含指针的结构:
struct foo
{
char* f;
int* d;
wchar* m;
}
我有一个指向这些结构的共享指针 vector :
vector<shared_ptr<foo>> vec;
vec
在堆栈上分配。当它在方法结束时超出范围时,将调用其析构函数。 (对吗?)这将依次调用 vector 中每个元素的析构函数。 (对吗?)调用 delete foo
只是删除诸如 foo.f
之类的指针,还是实际上从堆中释放内存?
最佳答案
delete foo;
将删除分配给 foo 结构的内存,其中包括三个指针。但是指针本身指向的内存只有在您实现显式删除它们的析构函数时才会被删除。
关于C++:删除结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3001336/