c++ - 为什么我不能为指向 null 的指针设置数据值

标签 c++ pointers data-structures null nullptr

struct avail
{
    int value;
    uint64_t y[8][5];
    avail **masks;
};
avail *n = new avail;
n->masks = new avail*[48];

现在说我必须设置 n->masks[i]->y[1][3]=0x000000000000000F 的一些数据

如果我这样做,为什么我不能这样做

n->masks[i]=NULL;

我不想要像链表那样的层次结构。我收到错误 nullptr。如果我不设置指针,我将得到 Access Violation。如果我不想使用它的“链接”来创建任何树/层次结构,我应该将这个指针指向哪里。

这只在我设置时有效

n->masks[i]=n;

但我认为这会覆盖数据存储。我的实现有什么问题吗?如果我只想设置它的数据,应该指向哪里呢?

最佳答案

因为如果指针为空,那么你指向一个你不能写入的地址。您可以随时写入已分配的地址、堆栈或堆。

分配你的面具,然后使用它:

n->masks[i] = new avail;

但是不要忘记删除分配的对象。好像 masks应该是 std::vector<std::unique_ptr<avail>> .

关于c++ - 为什么我不能为指向 null 的指针设置数据值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53362394/

相关文章:

c++ - 识别字符串中的下一个字符是否大写

c++ - 使用 const char * 创建对象时使用 std::make_unique 时出现链接错误

c++ - 进程返回 139 (0x8B) 段错误

c++ - 在 C++ 中定义指向列表的指针

c - c中的多维数组

c++ - 我正在编码 Node 结构,我认为这是构造函数初始化错误

c++ - 使用 boostspirit 将 int 对解析为 vector

c - 为什么要使用双重间接?或者为什么使用指向指针的指针?

scala - 在 Scala 中将元素移动到列表的前面

java - 具有排序的行和列的矩阵中第K个最小的元素