Я хочу инициализировать структуру, которая содержит динамический массив, я написал все это в функции.И есть еще одна функция для очистки этой структуры, теоретически, не будет утечек памяти.Однако, когда я запускаю программу с помощью valgrind, она сообщает, что произошла утечка памяти при входе или функции init.
Во-первых, я написал эту функцию инициализации с помощью malloc для выделения памяти для этой структуры.Он сообщает об утечке памяти.
Затем я изменяю malloc на realloc (NULL, ...), чтобы избежать этого искажения, но мне это не удалось.
Я не знаю, как стандартным способом в Cявляется реализация этой функции.
#include <stdlib.h>
typedef enum
{
RUN_SUCCESS,
/*Failure*/
RUN_FAILURE
} RunStat;
typedef struct
{
char *elements;
size_t top;
size_t size;
} Stack;
RunStat init_stack(Stack *stack)
{
stack->elements = (char *)realloc(NULL, 100 * sizeof(char));
stack->size = 100;
stack->top = 0;
return RUN_SUCCESS;
}
RunStat free_stack(Stack *stack)
{
free(stack->elements);
stack->elements = NULL;
stack->size = 0;
stack->top = 0;
return RUN_SUCCESS;
}
int main ()
{
Stack stack;
init_stack(&stack);
free_stack(&stack);
return EXIT_SUCCESS;
}
Каждая память здесь находится под моим контролем, я хочу, чтобы эта структура инициализировалась без какого-либо предупреждения об утечке памяти.И я хочу знать стандартный способ сделать это.