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

乐山ing 发布于 2016/10/31 22:35
阅读 865
收藏 0
typedef struct {
    int data[10000 * 10000];
    int length;
}SqList;
SqList* p = new SqList;
delete p;
能把里面数组的空间释放掉吗?
加载中
1
wei2011
wei2011
你这例子是可以的释放干净的。只有指针之类的才需要另外释放
東條・スペンサー・咲
東條・スペンサー・咲
回复 @乐山ing : 是的,之前的定义方式相当于你的结构体本身拥有数组的内存,即int*(1+10000*10000),使用指针的话结构体的大小就是指针+int的大小。
乐山ing
乐山ing
typedef struct { int* base; //指向一块内存 int length; }SqList; 是不是这样的话,就要手动先释放base所指向的内存。
1
感冒九十九
感冒九十九
栈上的空间由系统删除了,自己使用malloc/new在堆上分配的要手动free/delete删除
0
吃一堑消化不良
吃一堑消化不良
释放的是整个结构体申请的空间,但不能释放成员申请的资源
返回顶部
顶部