我在最近的一次采访中被问到这个问题,基本上是写一个函数来结合 free 和分配 null 的功能。我是这样回答的:
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
所以在执行之后,main
本地的 ptr
将保存空值,因为我从 newdelete
函数返回它。如果我刚刚在 newdelete 函数中分配了 NULL
,则 newdelete
本地的 ptr
将被清空,而不是 ptr
main
的本地。
我认为我的解决方案是正确的,面试官也接受了。然而,他期待着其他的答案。他坚持我不要从函数中返回 NULL
并仍然达到预期的结果。
有没有办法做到这一点?我能想到的只是传递另一个参数,它是指向 main
本地指针 ptr
的指针,但我不明白为什么它比我所做的更好!
最佳答案
Is there any way to accomplish that??
template <typename T> void safeDelete(T*& p){
delete p;
p = 0;
}
int main(int argc, char** arv){
int * i = new int;
safeDelete(i);
return 0;
}
关于c++ - 编写函数来释放指针并将其分配为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163839/