我在最近的一次采访中被问到这个问题,基本上是编写一个函数来结合 free 和分配 null 的功能。我是这样回答的:
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
因此,在执行之后,ptr
本地 tomain
将在我从newdelete
函数返回它时保存 null 值。如果我刚刚分配NULL
了 newdelete 函数,则ptr
本地 tonewdelete
将被清空,而不是ptr
本地 to main
。
我认为我的解决方案是正确的,面试官也接受了。然而,他期待着其他的答案。他坚持我不NULL
从函数返回,但仍然达到预期的结果。
有没有办法做到这一点?我能想到的只是传递另一个参数,它是指向ptr
本地指针的指针main
,但我不明白为什么它比我所做的更好!