私は最近のインタビューでこれを尋ねられました。基本的には、無料の機能とnullの割り当ての機能を組み合わせる関数を作成しています。私は次のように答えました:
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
したがって、実行後、関数から返すときにptr
ローカルtomain
はnull値を保持しますnewdelete
。NULL
newdelete関数で割り当てたばかりの場合、ptr
ローカルtonewdelete
はnullになり、ptr
ローカルtoはnullになりmain
ます。
私の解決策は正しかったと思います。インタビュアーもそれを受け入れました。しかし、彼は他の答えを期待していました。彼は、私が関数からを返さずNULL
、それでも望ましい結果を達成すると主張していました。
それを達成する方法はありますか?私が考えることができるのは、ptr
ローカルのポインタへのポインタである別の引数を渡すことmain
だけですが、なぜそれが私がしたよりも優れているのかわかりません!