Если у меня есть 2D массив, выделенный следующим образом:C освободив 2D массив, если таНос сбой
int** map;
map = malloc(number * sizeof(int*));
if(!(map)){
printf("out of memory!\n");
return 1;
}
for (int i = 0; i < number; i++){
map[i] = malloc(number * sizeof(int));
if (!(map[i])){
printf("Not enough memory!\n");
return 1;
}
}
Если распределение не удается, и мы вступаем в, если заявлении не я должен Бесплатная карта и «колонна» выделены до сих пор ? Если да, то как мне это сделать?
Прямо сейчас я просто распечатаю сообщение и вернусь 1, но я не уверен, что это правильный подход.
У вас нет 2D-массива. Это справочная таблица с указателем. Чтобы выделить 2D-массив, вы должны использовать 'int (* map) [number] = malloc (sizeof (int [число] [число])) или эквивалент. Разница в том, что 2D-массив имеет свои данные, выделенные в соседних ячейках памяти, очень важно понять. – Lundin
Не забудьте проверить возвращаемое значение внешнего malloc. – user464502
@ Lundin О, я не знал, что, кроме того, что данные распределены по-разному, есть ли другие отличия в том, как их использовать/скорость? –