我在最近的一次採訪中被問到了這個問題,基本上寫了一個函數來結合free和assign null的功能。我回答以下方式:寫一個函數來釋放一個指針並賦值它NULL
void main()
{
int *ptr;
ptr = new int;
ptr = newdelete(ptr);
}
(int*) newdelete (int *ptr)
{
delete(ptr);
return NULL;
}
執行後因此,ptr
本地main
將持有空值,因爲我從newdelete
函數返回它。如果我剛剛在newdelete函數中分配了NULL
,本地ptr
將被清零,而本地main
將被清空。
我想我的解決方案是正確的,面試官也接受了。但是,他期待着一些其他的答案。他堅持我不會從功能中返回NULL
,並且仍然達到預期的效果。
有什麼辦法可以做到這一點?我所能想到的只是傳遞另一個參數,指向指向main
的指針ptr
,但我不明白爲什麼它比我所做的更好!
我想你的意思是'new int',因爲'New'不是一個定義的'C++'操作符。 – ereOn 2010-07-02 07:09:36
傳遞對指針的引用。 – 2010-07-02 07:10:36
http://stackoverflow.com/questions/1265666/reason-why-not-to-have-a-delete-macro-for-c/1265681#1265681 – Goz 2010-07-02 07:31:09