gpt4 book ai didi

c - 结构体数组中矩阵的动态内存分配

转载 作者:行者123 更新时间:2023-11-30 16:41:01 24 4
gpt4 key购买 nike

我想创建一个结构体数组,并为该结构体和两个矩阵动态分配内存

typedef struct {
int **cont;
double **doubmat;
} libra;

int main(int argc, char *argv[]) {

libra *arra = calloc(Nfr,sizeof(libra));

for (i = 0; i < Nfr; i++) {
arra[i].doubmat = calloc(Nmol, sizeof (libra));
}
for (i = 0; i < Nfr; i++) {
for (j = 0; j < Nmol; j++) arra[i].doubmat[j] = calloc(Nmol, sizeof (libra));
}

for (i = 0; i < Nfr; i++) {
arra[i].cont = calloc(Nmol, sizeof (libra));
}
for (i = 0; i < Nfr; i++) {
for (j = 0; j < Nmol; j++) arra[i].cont[j] = calloc(Nmol, sizeof (libra));
}
}

但是我的内存有一些问题,计算过程中的数字取决于数组中结构的数量。我认为我在分配方面犯了一些错误。

有人有一些建议吗?预先感谢您的帮助。

最佳答案

您指定了不正确的 sizeof(type) 来为矩阵分配内存。你需要做这样的事情:

typedef struct {
int **cont;
double **doubmat;
} libra;

int main(int argc, char *argv[]) {

libra *arra = calloc(Nframe,sizeof(libra));

for (i = 0; i < Nfr; i++) {
arra[i].doubmat = calloc(Nmol, sizeof(*arra[i].doubmat));
for (j = 0; j < Nmol; j++)
arra[i].doubmat[j] = calloc(Nmol, sizeof(**arra[i].doubmat));
}

for (i = 0; i < Nfr; i++) {
arra[i].cont = calloc(Nmol, sizeof(*arra[i].cont));
for (j = 0; j < Nmol; j++)
arra[i].cont[j] = calloc(Nmol, sizeof(**arra[i].cont));
}
}

关于c - 结构体数组中矩阵的动态内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46426177/

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