gpt4 book ai didi

c - 分配结构体矩阵

转载 作者:行者123 更新时间:2023-11-30 16:33:37 25 4
gpt4 key购买 nike

我不知道我做错了什么。我正在尝试创建一个结构矩阵,其元素是指向该结构的指针:

typedef struct _Array
{
short *arr;
unsigned short size;
} Array;

我编写了一个动态分配矩阵的代码,但由于这一行而出现错误

mat[i][j]->arr = random_numbers(&mat[i][j]->size);

下面的代码是错误的。

Array ***mat = (Array***)malloc(5 * sizeof(Array**));
for (short i = 0; i < 5; i++) {
for (short j = 0; j < 5; j++) {
*(mat + i) = (Array**)malloc(5 * sizeof(Array*));
mat[i][j]->arr = random_numbers(&mat[i][j]->size);
}
}

random_numbers 是一个返回包含随机数及其大小的数组的函数

short *random_numbers(unsigned short* pSize)

这是我收到的错误:app.exe 中的 0x013F17F5 处抛出异常:0xC0000005:写入位置 0xCDCCDCD 时发生访问冲突。

最佳答案

问题是您已经为指针分配了空间,但没有为结构分配了空间。你取消引用一些不存在的东西。

添加:

    *(mat + i) = (Array**)malloc(5 * sizeof(Array*));
mat[i][j] = malloc(sizeof(array)); //<<-allocate sace for the struct;
mat[i][j]->arr = random_numbers(&mat[i ][j]->size);

关于c - 分配结构体矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com