我在使用C++/CLI和Visual Studio 2010的問題奇怪的NullReferenceException儘管空檢查
我有一個使用一個指向socket像這樣網絡管理員:
class NetworkManager{
public:
SOCKET socket_open(char* local_ip_addr, int local_port);
private:
SOCKET* masterServerSocket;
};
當我想要使用指針我檢查空指針如下:
SOCKET NetworkManager::socket_open(char* local_ip_addr, int local_port)
{
if (masterServerSocket) {
return *masterServerSocket;
} else {
// Initalize mastersocket
...
}
}
但我似乎得到一個NullReferenceException if條件。刪除return語句不會引發異常。
在當前的代碼指針是總是 NULL,我將它設置爲NULL在構造函數中也再沒有分配給它。
單步執行應用程序確實會出現這種情況,所以我不認爲棧跟蹤是錯誤的。
我也嘗試添加一個布爾值,initalized在構造函數中爲false,並檢查相反,仍然是相同的問題。因此,我不認爲這是由於操作符重載
我試過!= NULL爲好,
如果有人能夠給我一些指點(沒有雙關語意)同樣的事情,或者幫助我我會很感激! =)
您可以發佈您使用的代碼(從聲明/初始化/實例化到錯誤點)嗎? – M4rc
你是否可能從一個空的'NetworkManager'指針調用'socket_open'? – hvd
來自hvd的評論是正確的,確實如此。謝謝! – ChewToy