首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-17 
请教一个关于内存分配的问题。。。。。。template classTvoiddeleteAndNull(T*&pointer){deletepointerpointe

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


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; //加一个全局说明

热点排行