Простой
while (N) free(ptr[--N]);
free(ptr);
красивый
#define FALSE 0
#define TRUE 1
typedef int BOOL;
void freev(void **ptr, int len, BOOL free_seg) {
if (len < 0) while (*ptr) {free(*ptr); *ptr++ = NULL;}
else while (len) {free(ptr[len]); ptr[len--] = NULL;}
if (free_seg) free(ptr);
}
freev(ptr, N, TRUE); /* if known length */
freev(ptr, -1, TRUE); /* if NULL-terminated */
freev(ptr, -1, FALSE); /* to keep array */
Патриция
GLib функции:
Мне трудно заниматься серьезным программированием на C без GLib. Он вводит такие вещи, как динамические строки и закладывает основы для функционального программирования . Это действительно должно быть частью стандартной библиотеки времени выполнения C. Это дало бы С глоток свежего воздуха. Это сделало бы C разумным и конкурентоспособным языком снова для 2019 года. Но поскольку это не так, это добавит 1 МБ к вашему приложению (либо в размере DLL, либо в размере исполняемого файла). Также дистрибутив Windows поддерживается садистами .