我有一个zap()函数写入释放1-d数组,如下所示。如果它没有分配内存,我可以创建一个C++“zap”函数来处理指针吗?
void zap(double *(&data))
{
if (data != NULL)
{
delete [] data;
data = NULL;
}
return;
}
我的印象是,if data != NULL
不会尝试取消分配从未分配的内存下,但我想我错了。我遇到以下实现问题。
void fun()
{
int condition = 0;
double *xvec;
double *yvec;
allocate_memory_using_new(yvec); //a function that allocates memory
if (condition == 1) allocate_memory_using_new(xvec);
//some code
//deallocate memory:
zap (yvec);
zap (xvec); //doesn't work
return;
}
输出如下:
Unhandled exception at 0x6b9e57aa (msvcr100d.dll) in IRASC.exe: 0xC0000005: Access
violation reading location 0xccccccc0.
所以我知道这是不是尝试调用ZAP时,很明显这是从来没有实际使用的指针所希望的事情。我只是想知道是否有办法在zap()函数中的某个点检查指针的地址以避免异常。预先感谢您的帮助和见解!
你的测试是多余的,因为如果数据为0,delete []数据已经是空操作。 – 2011-06-04 08:36:12