首页 > 解决方案 > 为什么我不能为指向 null 的指针设置数据值

问题描述

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;

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

标签: c++pointersdata-structuresnullnullptr

解决方案


因为如果指针为空,那么您将指向一个您无法写入的地址。您始终可以写入已分配的地址、堆栈或堆。

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

n->masks[i] = new avail;

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


推荐阅读