奇怪的NullReferenceException,尽管进行了null检查
Strange NullReferenceException despite null check
我在Visual Studio 2010中使用C++/CLI时遇到问题。
我有一个网络管理器,它使用一个指向套接字的指针,如下所示:
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
...
}
}
但我似乎在if条件下得到了一个NullReferenceException。删除return语句不会产生异常。
在当前代码中,指针总是NULL,我在构造函数中将其设置为NULL,以后再也不会分配给它。
通过应用程序,它确实被抛出了条件,所以我不认为stacktrace是错误的。
我还尝试添加一个布尔值,在构造函数中初始化为false,并对此进行检查,但仍然存在相同的问题。所以我不认为这是由于操作员超载
我试过了NULL也是一样,
如果有人能给我一些建议(并非双关语)或帮助我,我将不胜感激!=)
hvd的注释是正确的,我调用了一个空的NetworkManger指针。事实证明堆叠竞争没有那么大帮助=)
谢谢你的回复!
是否正在制作指向NetworkManager对象的指针?如果是,您是否正在验证它不是NULL?
相关文章:
- 检查字符串是否"null" C++
- C++,检查当我无法使用 NULL/0 时是否初始化了变量
- 类返回对象类型,但如何返回和检查 null
- C++如何将结构数组初始化为null,然后在while循环中检查该数组的元素是否为null
- 我可以根据null或特定类型的值检查引用吗
- 如何避免对具有组合关系的Object进行null检查
- EXC_BAD_ACCESS当我尝试检查 NULL 时
- 从多个来源检查NULL:共享_ptr vs double指针
- boost :: asio :: io_service检查是否为null
- 我如何检查该点动态分配的单指针是否为null
- 检查指针是否为null,然后在同一if语句中取消引用它,这样安全吗
- 为什么strlen()比手动循环检查以null结尾的字符快20倍
- NULL /空字符串检查:CPU开销
- 奇怪的NullReferenceException,尽管进行了null检查
- C++ - 检查指针是否指向有效内存(此处不能使用 NULL 检查)
- 智能指针:通过引用设置、重置、设置null、null检查或重置检查
- 删除惰性初始化后的null检查
- 为什么在NULL检查之后要在指针上调用递归函数?
- 在qt中NULL检查整数
- 是否有可能制作一个具有NULL检查的通用c++函数指针包装器?