2013-11-19 6 views
-2

Имея следующий фрагмент кода:Free два двумерный массив

int (*fd)[2];               
int memory = n * sizeof(int);        
fd = malloc(memory); 

Как я должен правильно освободить выделенную память?

+4

Один вызов 'malloc()' - один вызов 'free()'. Просто 'free (fd)'. – JIghtuse

+2

Когда вы выделяете этот путь, вы должны быть уверены, что 'n' содержит общее количество элементов' int', а не количество строк. Обычно было бы лучше написать 'int (* fd) [2] = malloc (NumberOfRows * sizeof * fd);'. Это включает в себя количество столбцов в вычислении размера и позволяет избежать ошибок, которые могут возникнуть, если 'int' изменяется в одном месте (объявление' fd'), а не другое (выражение 'sizeof'). –

+0

@EricPostpischil Спасибо, человек! Это была проблема. Ты спас мой день! – JosephConrad

ответ

1

Используйте free(fd) чтобы освободить выделенную ячейку от malloc до fd.
ПРИМЕЧАНИЕ:free() только отмечает фрагмент памяти как свободный - не применяется принудительная операция освобождения.

Для детального разъяснения читайте: Heap Management With malloc() and free().

Смежные вопросы