gcc 4.4.5 c89
У меня есть функция create_object, в которой я выделяю память для глобальной структуры.И у меня есть функция с именем destroy_object, где я проверяю, что указатель не нулевой, а затем я освобождаю.Просто я освобождаю память, которая не была выделена.Тем не менее, я проверил это, сделав 2 последовательных вызова destroy_object.Тем не менее, я получаю дамп стека при втором вызове.Тем не менее, я уверен, что он не будет свободным, так как я назначил указатель на NULL.Поэтому следует пропустить бесплатную функцию.
static struct Config_t {
char protocol[LINE_SIZE];
char mode[LINE_SIZE];
} *app_cfg = NULL;
int create_object()
{
app_cfg = malloc(sizeof *app_cfg);
memset(app_cfg, 0, sizeof *app_cfg);
}
void destroy_config()
{
/* Check to see if the memory is ok to free */
if(app_cfg != NULL) {
free(app_cfg);
app_cfg = NULL;
}
}
Большое спасибо за любые предложения,
====================== РЕДАКТИРОВАТЬ ========== По сути, в основной функции у меня есть вызов create_object (), я выполняю некоторую обработку, а затем вызываю destory_object.
int main(void)
{
create_object();
/* Do some processing on the structure */
destroy_object();
return 0;
}
========================= Окончательное редактирование ==== статическая структура Config_t {char protocol [LINE_SIZE];символьный режим [LINE_SIZE];} app_cfg [1] {{"", ""}};
А сейчас я не использую malloc и free.