我已经尝试让这段代码正常工作很长一段时间了,不幸的是,我总是得到 NullReferenceException
。我发现如果不使用指向该类的指针,这段代码就可以工作,但我不明白为什么指针会导致这个异常。顺便说一句,我对 C++ 不是很有经验,所以你能以简单的方式解释一下。提前致谢。
class Box
{
public: char* data;
};
int Main()
{
Box* a;
a->data = "Hello World";
return 0;
}
最佳答案
Box* a;
声明一个指向 Box
对象的指针。您永远不会创建 Box
对象,因此a
不会指向任何东西。
因此,写入 a->data
的行为是未定义。
要么放下指针以获得 Box a;
,要么使用 Box* a = new Box();
。在后一种情况下,不要忘记调用 delete a;
否则你会泄漏内存。
最后,编写 a->data = "Hello World";
可能会有问题:a->data
将成为指向 read-仅字符串文字;试图修改该缓冲区内容的行为是未定义。
最好使用 std::string
作为 a
的类型。
关于c++ - 为什么分配成员会引发 NullReferenceException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35571741/