C++中的delete能否删除结构体内的东西?

发布于 2021-11-27 16:06:02 字数 179 浏览 830 评论 5

typedef struct {

    int data[10000 * 10000];

    int length;

}SqList;

SqList* p = new SqList;

delete p;

能把里面数组的空间释放掉吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

各自安好 2021-12-03 11:06:47

释放的是整个结构体申请的空间,但不能释放成员申请的资源

毁梦 2021-12-02 15:59:50

栈上的空间由系统删除了,自己使用malloc/new在堆上分配的要手动free/delete删除

奢望 2021-12-02 07:56:07

typedef struct { int* base; //指向一块内存 int length; }SqList; 是不是这样的话,就要手动先释放base所指向的内存。

猫九 2021-12-01 06:22:25

回复
@乐山ing : 是的,之前的定义方式相当于你的结构体本身拥有数组的内存,即int*(1+10000*10000),使用指针的话结构体的大小就是指针+int的大小。

坏尐絯 2021-11-30 08:32:25

你这例子是可以的释放干净的。只有指针之类的才需要另外释放

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文