【发布时间】:2018-05-14 04:34:49
【问题描述】:
我正在尝试在 MSVC 的 c 中使用 malloc 创建一个三维结构数组。它编译没有错误,但是当我调试它时,它在初始化一些元素后给出了错误。
声明:
typedef struct table_info
{
unsigned long size;
char code[33];
char path[300];
}table_info;
table是一个全局变量,定义为:
struct table_info ***table=NULL;
malloc 并初始化table:
char garb[33] = { '\0' };
char garb_path[300] = { '\0' };
table = (table_info***)malloc(ROWS* sizeof(**table));
for (int m = 0; m < ROWS; m++)
{
table[m] = (table_info**)malloc(COLS* sizeof(*table[m]));
for (int j = 0; j < COLS; ++j)
{
table[m][j] = (table_info*)malloc(DEPTH * sizeof(table[m][j]));
for (int k = 0; k < DEPTH; ++k)
{
table[m][j][k].size = 0;
strcpy_s(table[m][j][k].code, sizeof(table[m][j][k].code), garb);
memcpy(table[m][j][k].path, garb_path, sizeof(garb_path));
}
}
}
我是否正确初始化它?或者我应该更正什么才能使其正常工作?
【问题讨论】:
-
struct table_info ***table==>struct table_info (*table)[COLS][DEPTH];和table = (table_info***)malloc(ROWS* sizeof(**table));==>table = malloc(ROWS * sizeof *table);如果你想要一个真正的 3D 数组,请删除另一个mallocs。 -
Three stars 经常表示设计错误。
标签: c visual-c++ multidimensional-array struct malloc