我們有以下幾點:如何在C++中檢查託管指針是否無效?
,問題是怎麼做的,與INT ^?
int^ a;
if(?????????????)
a = gcnew int;
P.S. nullptr並不能解決所有問題,因爲我發現對象的保留值(nullptr判斷爲不相等),並在此之後立即使用此對象導致System.ObjectDisposedException。
我們有以下幾點:如何在C++中檢查託管指針是否無效?
,問題是怎麼做的,與INT ^?
int^ a;
if(?????????????)
a = gcnew int;
P.S. nullptr並不能解決所有問題,因爲我發現對象的保留值(nullptr判斷爲不相等),並在此之後立即使用此對象導致System.ObjectDisposedException。
這應該檢查變量,但它真的很奇怪的實現,依靠.NET GC運行。
try
{
ATestFunctionThatUseVariableForNothing(a);
}
catch (System::ObjectDisposedException^ e)
{
a = nullptr;
}
catch (System::NullReferenceException^ e)
{
a = nullptr;
}
無論如何應該有另一個更好的解決方案。
如果我們打算像正常*指針那樣「刪除」那個指針,那麼安全的做法是手動「刪除」(設置爲nullptr)。
注意'int * a;'不用'NULL'初始化'a',它包含垃圾。 – Naveen
如果我們討論調試版本,或者像內存破壞警衛(即0xCDCDCDCD)。 – Forgottn