为什么我不能为指向 null 的指针设置数据值
Why can't I set values of data for a pointer pointing to 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
。如果我不想使用它的 "links" 来创建任何 tree/hierarchy.
,我应该将这个指针指向哪里
这仅在我设置
时有效
n->masks[i]=n;
但我认为这会覆盖数据存储。我的实现有什么问题吗?如果我只想设置它的数据,应该指向哪里?
因为如果指针为空,那么你指向一个你不能写入的地址。你可以随时写入你分配的地址,堆栈或堆。
分配你的面具,然后使用它:
n->masks[i] = new avail;
但是不要忘记删除分配的对象。好像 masks
应该是 std::vector<std::unique_ptr<avail>>
.
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
。如果我不想使用它的 "links" 来创建任何 tree/hierarchy.
这仅在我设置
时有效n->masks[i]=n;
但我认为这会覆盖数据存储。我的实现有什么问题吗?如果我只想设置它的数据,应该指向哪里?
因为如果指针为空,那么你指向一个你不能写入的地址。你可以随时写入你分配的地址,堆栈或堆。
分配你的面具,然后使用它:
n->masks[i] = new avail;
但是不要忘记删除分配的对象。好像 masks
应该是 std::vector<std::unique_ptr<avail>>
.