Странное исключение NullReferenceException, несмотря на проверку нуля

У меня проблемы с использованием C ++ / CLI с Visual Studio 2010.

У меня есть сетевой менеджер, который использует указатель на разъем вот так:

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 в конструкторе и больше никогда не присваиваю.

  • Проходя через приложение, оно действительно вызывается условием, поэтому я не думаю, что трассировка стека неверна.

  • Я также попытался добавить логическое значение, инициализировалось в false в конструкторе и проверил это, но проблема та же. Так что я не думаю, что это из-за перегрузки оператора

  • Я пытался! = NULL, тоже самое

Если кто-нибудь сможет дать мне несколько советов (без каламбура) или помочь мне, я буду признателен! знак равно

1

Решение

Комментарий от hvd был верным, я вызывал нулевой указатель NetworkManger. Оказывается, трассировка стека не так уж полезна =)

Спасибо за ваш ответ!

1

Другие решения

Вы делаете указатель на объект NetworkManager? Если да, вы проверяете, что это не NULL?

1