c++ - 为什么我不能为指向 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;
但我认为这会覆盖数据存储。我的实施有什么问题吗?如果我只想设置它的数据,我应该把它指向哪里?
解决方案
因为如果指针为空,那么您将指向一个您无法写入的地址。您始终可以写入已分配的地址、堆栈或堆。
分配你的面具,然后使用它:
n->masks[i] = new avail;
但不要忘记删除分配的对象。好像masks
应该是一个std::vector<std::unique_ptr<avail>>
。
推荐阅读
- javascript - 使用 vscode 和 powershell 时出现“未定义的不和谐”
- python - 如何找到百分比变化值的同一行中的值
- c++ - 使用 C++ 在 OpenGL 中移动自动旋转的 3d 多边形
- java - 无法从 ViewHolder (RecycleView) 调用 Adapter(onBindViewHolder) 中的方法
- sql - 在 Redshift 中查找给定表名的模式名称
- android - 应用被终止时显示本地通知 - Xamarin.Android
- javascript - 如何呈现 Spotify 播放列表数据?
- memory-management - VSCode 工作区单独的扩展列表
- java - Micronaut 数据事务无法获取当前线程的事务同步会话
- api - REST:通过外键进行 GET 一对多