c - 创建由`calloc`分配的多维数组指针或嵌套双指针
问题描述
我是 C 的新手,并试图理解指针和内存。我想创建一个由calloc
. 但是我遇到了段错误。谁能指出我做错了什么?
尝试1:
struct line {
struct dot *a;
};
struct data {
struct line ***bold;
};
#define COUNT 16
void func (void) {
struct data *data = calloc(1, sizeof(*data));
data->bold = calloc(COUNT * COUNT + 1, 4);
for (size_t i = 0; i < COUNT; i++) {
for (size_t j = 0; j < COUNT; j++) {
data->bold[i][j]->a = i + j; //segfault here
}
}
}
尝试2:
struct line {
struct dot **a;
};
struct data {
struct line **bold;
};
void func (void) {
struct data *data = calloc(1, sizeof(*data));
data->bold = calloc(COUNT + 1, 4);
for (size_t i = 0; i < COUNT; i++) {
data->bold[i]->a = calloc(COUNT + 1, 4); //segfault here
}
for (size_t i = 0; i < COUNT; i++) {
for (size_t j = 0; j < COUNT; j++) {
data->bold[i]->a[j] = i + j;
}
}
}
在这里,我尝试创建一个嵌套的双指针calloc
,我希望通过它可以给我与上述尝试类似的数据变量。但是,它也出现了段错误。为什么会发生此段错误,我该如何修复此代码?我的目标是在下面打印类似的内容并获得输出
printf("%d : %d\n", data->bold[2]->a[3], data->bold[2][3]->a);
解决方案
推荐阅读
- html - 在具有多个文本节点的单个元素中选择文本节点
- angular - 如何专注于 PrimeNG p 按钮
- javascript - 无法将日期字段从 sendKeys 发送到 Javascript Selenium 中的 ion-datetime 字段
- python - 如何在火花流中添加 2 行具有相同键(列值)的行?
- html - 如何在 HTML 中为桌面透明 nvabar 并在移动屏幕的切换上显示相同的中殿栏。?
- c# - 更改 ListView 中文本的颜色
- python - posts.annotate(same_tags=Count('tags') 到底是做什么的?
- python-3.x - 如何查看通过 Jupyterlab 从 Yahoo Finance 获取的历史数据的全行
- python - 如何确保一个特定任务或其他任务可以使用 asyncio 一次运行?
- html - 如何让导航栏滑到下一行?