读书人

怎么删除动态数组

发布时间: 2012-04-23 13:17:38 作者: rapoo

如何删除动态数组?
如:

float *dt_Elevation = new float[200];

是 delete dt_Elevation; 吗?

如何保证刚好删除 200个元素?
谢谢

[解决办法]
delete []dt_Elevation

申请了多少就会删掉多少。
[解决办法]
这个得看实现的

申请堆空间的时候,会有一些额外空间用于保存这块申请的空间的信息,比如大小,这样释放时便能正确释放

某种实现
free的源代码:

struct mem_control_block {
int is_available; //这是一个标记
int size; //这是实际空间的大小
}

void free(void *ptr)
{
struct mem_control_block *free;
free = ptr - sizeof(struct mem_control_block);
free->is_available = 1;
return;
}
[解决办法]

探讨

delete []dt_Elevation

申请了多少就会删掉多少。

[解决办法]
new的时候带[],那么delete的时候也要带[]
new的时候不带[],那么delete的时候也不要带[]
记住这个就可以了

读书人网 >C++

热点推荐