假设你有一个功能
int * something ( int size ){
int * sample= new int[size];
//... do something
return sample;
}
如果在其他地方使用,比如
..。
Int * temp=something(5);
// use the array....
delete [] temp;
……
这会让我泄密吗??
发布于 2016-12-12 14:26:21
这是合法的,但很容易出错,因为如果分配的数组和被取消分配的数组之间存在异常,则存在内存泄漏的风险。最好使用智能指针使此代码异常安全。
是的,只要使用相同类型的指针,并且指针仍然指向相同的地址,并且数组还没有在代码的其他地方被释放(所谓的“双空闲”问题),您就可以在前面使用new[]
编辑的内容。必须满足所有三个要求,否则您会遇到未定义的行为,然后所有的赌注都会被取消。
https://stackoverflow.com/questions/41102543
复制相似问题