C++中的delete能否删除结构体内的东西?
typedef struct {
int data[10000 * 10000];
int length;
}SqList;
SqList* p = new SqList;
delete p;
能把里面数组的空间释放掉吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
释放的是整个结构体申请的空间,但不能释放成员申请的资源
栈上的空间由系统删除了,自己使用malloc/new在堆上分配的要手动free/delete删除
typedef struct { int* base; //指向一块内存 int length; }SqList; 是不是这样的话,就要手动先释放base所指向的内存。
回复
@乐山ing : 是的,之前的定义方式相当于你的结构体本身拥有数组的内存,即int*(1+10000*10000),使用指针的话结构体的大小就是指针+int的大小。
你这例子是可以的释放干净的。只有指针之类的才需要另外释放