【发布时间】:2019-06-30 21:45:38
【问题描述】:
我正在尝试写入和读取char 三维数组,或者换句话说,字符串数组的数组。
我已经尝试在数组的每个部分分配内存,但总是失败并出现以下错误:Segment fault (core dumped)
/**
* Create array to write
*/
char writed[2][2][512] = {{"Hello", "World"}, {"Bye", "World"}};
/**
* Allocate memory
*/
char *** readed = (char ***)malloc(sizeof(char **) *2 * 2 * 512);
for (int z = 0; z < 2; z++) {
readed[z] = (char **)malloc(sizeof(char **) * 2 * 512 );
for (int y = 0; y < 2; y++) {
readed[z][y] = (char *)malloc(sizeof(char) * 512);
}
}
/**
* Write array
*/
FILE *writeFile = fopen("strings", "wb");
fwrite(writed, 2 * 2 * 512, 2 * 512, writeFile);
fclose(writeFile);
/**
* Read array
*/
FILE *readFile = fopen("strings", "rb");
fread(readed, 2 * 2 * 512, 2 * 512, readFile);
fclose(readFile);
【问题讨论】:
-
你不需要分配那么多内存。您只需要乘以第一个数字。这并不能解决问题,但你应该改变它。
-
请发minimal reproducible example,以便我们重现问题,然后帮助您调试
-
已经解决了。谢谢
标签: c file pointers multidimensional-array