C++:删除结构?

标签 c++ memory-management heap-memory

我有一个包含指针的结构:

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/

相关文章:

c++ - 由于创建新对象,C++ 中内存不足

java - 将大型 hprof 加载到 jhat

c++ - 俄罗斯农民乘法算法的时间复杂度?

c++ - 在文件中查找字符串 C++

list - Delphi - 在释放自身之前我必须释放 TObject 内的所有元素吗?

c++ - 当它是 noop 时是否需要调用一个非平凡的析构函数?

memory-management - 对象方法存储在栈还是堆中?

C++/openGL : Rotating a QUAD toward a point using quaternions

c++ - 使用类成员作为 WNDPROC/DLGPROC 有或没有全局

在 C 中调用 free() 会失败吗?