-2
Имея следующий фрагмент кода:Free два двумерный массив
int (*fd)[2];
int memory = n * sizeof(int);
fd = malloc(memory);
Как я должен правильно освободить выделенную память?
Имея следующий фрагмент кода:Free два двумерный массив
int (*fd)[2];
int memory = n * sizeof(int);
fd = malloc(memory);
Как я должен правильно освободить выделенную память?
Используйте free(fd)
чтобы освободить выделенную ячейку от malloc
до fd
.
ПРИМЕЧАНИЕ:free()
только отмечает фрагмент памяти как свободный - не применяется принудительная операция освобождения.
Для детального разъяснения читайте: Heap Management With malloc()
and free()
.
Один вызов 'malloc()' - один вызов 'free()'. Просто 'free (fd)'. – JIghtuse
Когда вы выделяете этот путь, вы должны быть уверены, что 'n' содержит общее количество элементов' int', а не количество строк. Обычно было бы лучше написать 'int (* fd) [2] = malloc (NumberOfRows * sizeof * fd);'. Это включает в себя количество столбцов в вычислении размера и позволяет избежать ошибок, которые могут возникнуть, если 'int' изменяется в одном месте (объявление' fd'), а не другое (выражение 'sizeof'). –
@EricPostpischil Спасибо, человек! Это была проблема. Ты спас мой день! – JosephConrad