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;
但是我认为这将覆盖数据存储。我的实现有什么问题吗?如果我只想设置其数据,该将其指向何处?
答案 0 :(得分:2)
因为指针为空,则指向无法写入的地址。您始终可以写入已分配,堆栈或堆的地址。
分配面具,然后使用它:
n->masks[i] = new avail;
但是不要忘记删除分配的对象。似乎masks
应该是std::vector<std::unique_ptr<avail>>
。