Здесь у вас две разные структуры данных, каждая с разным макетом.
writed
- это трехмерный массив char
, означающий, что вся память массива является смежной.Напротив, readed
является указателем на массив char **
, каждый из которых указывает на массив char *,
, каждый из которых указывает на массив char
, и ни один из них не должен быть непрерывным.
Чтобы иметь аналогичную структуру данных, вам нужно объявить readed
как указатель на 2D-массив и выделить место для достаточного количества таких объектов для 3D-массива:
char (*readed)[2][512] = malloc(2 * sizeof(char[2][512]));
Также, не приводите возвращаемое значение malloc
.
Вы также пишете / читаете больше, чем нужно:
fwrite(writed, 2 * 2 * 512, 2 * 512, writeFile);
...
fread(readed, 2 * 2 * 512, 2 * 512, readFile);
Это говорит о том, что вы читаете/ запись 2 * 512
элементов, каждый из которых имеет размер 2 * 2 * 512
.Вы только читаете / пишете 1 член этого размера:
fwrite(writed, 2 * 2 * 512, 1, writeFile);
...
fread(readed, 2 * 2 * 512, 1, readFile);