读书人

请问一个关于内存分配的有关问题。

发布时间: 2012-02-17 17:50:42 作者: rapoo

请教一个关于内存分配的问题。。。。。。


template <class T>
void deleteAndNull(T * & pointer)
{
delete pointer;
pointer = NULL;

return;
}


template <class T>
void deleteAndNull1(T [] * & pointer)
{
delete [] pointer;
pointer = NULL;

return;
}

以上是的两个方法模板中,第一个是正确的,而第二个是错误的~~~请问第二个方法模板中那里错了啊,谢了。。。。。。。。


[解决办法]

第二个方法你的传递参数写的不对
我知道你的意思是想接收一个开辟了一段空间的指针是吧?
但实际上在传递参数的时候只是接收一个头指针而已,
至于这个头指针的后面是否是一大段开new出来的数组,
系统是不管的,
要靠程序员自己进行管理.
所以你的两个程序的参数都应该是T* &pointer,
里面都是delete []pointer就可以了,
因为如果你传的pointer指向的只是一个值,而不是数组的话,
delete []也不会出错


delete[]是可以重载的,楼主改一下试试:
::delete [] pointer; //加一个全局说明

读书人网 >C++

热点推荐