关于new分配内存delete收回内存的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 08:31:11
我用float *p=new float [100];分配了100个内存单元
再用delete回收时发现:delete [50] p;和delete [100] p;的作用都是把new分配的100个单元都回收了,那怎么才能只回收前50个呢?

float* p = new float[100];
float* pp;

for(pp = p; pp != p + 50; ++pp)
delete pp;

p = pp;

delete [] p;

不知道对不对, 没实验过这种方法, 如果你要动态分配和释放的话用STL的容器就可以了, 老实说如果以上方法无效的话你的机器会受很大的摧残滴...

很特别的问题哎,从来没这样想过.
要不你再定义一个长50的float数组,保存p[50]到p[99],然后再delete []p;