2 u014776141 u014776141 于 2014.12.02 00:53 提问

如何释放堆的部分内存

int *p,*q;
p=new int[10];
q = P+5;
delete q;//如何只释放P+5 以后的内存?

1个回答

ce123
ce123   Rxr 2014.12.02 19:34
已采纳

一般来说,堆分配器分配一块内存时,会在这块内存的头部或者尾部保存一些信息(包括这块内存的大小,和指向其他内存块的指针),
释放一块堆内存时,需要先找到之前保存的信息.

还没有见过可以部分释放一块堆内存,一般都是整块释放.

但从技术上是可以实现的.

我之前写过一个简单的堆分配器,基本原理如上,可以参考一下:http://blog.csdn.net/ce123_zhouwei/article/details/21706451

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!