Каков лучший правильный способ реализации динамически изменяемого размера стека в C?
Например, я хочу выделить объем памяти для стека, но когда этот стек заполняется, выделенная память удваивается для размещения новых данных и т. Д.
У меня есть стек, реализованный в минуту с использованием простого массива пустых указателей, таким образом, я могу хранить указатели всех типов, поэтому его можно использовать многократно. Когда я пытаюсь реализовать это, используя malloc () / realloc (), я сталкиваюсь с ошибками при выполнении математических указателей из-за пустых указателей, не имеющих назначенного размера.
Каков лучший правильный способ реализации динамически изменяемого размера стека в C?
EDIT:
Я пытался что-то вроде этого кода (проверка ошибок удалена), но теперь я понимаю, что не могу взаимодействовать с пустыми указателями, подобными этому. Так что я просто думаю, как сделать что-то подобное на законных основаниях. Это большое учебное упражнение для меня, так как я никогда не сталкивался с C.
#include <stdio.h>
#include <stdlib.h>
#include "stack.h"
static int index = 0;
void* CreateStack(void)
{
void *stack = malloc(INITIAL_STACK_SIZE);
return stack;
}
void* Pop(void *stack)
{
return stack + index--;
}
void Push(void *stack, void *value)
{
*(stack + index) = value;
}
void FreeStack(void *stack)
{
free(stack);
}