무엇이 가장 좋음
C에서 동적 크기 조정 스택을 구현하는 방법은 무엇입니까?C에서 동적 크기 조정 스택을 구현하는 가장 좋은 방법은 무엇입니까?
예를 들어, 내가 스택에 메모리의 양을 할당하고 싶지만 그 스택이 가득 차면 때, 두 배로 할당 된 메모리 등,
내가 스택 사용 분에 구현 한 새로운 데이터를 수용하기 위해 void 포인터의 간단한 배열,이 방법은 모든 유형의 포인터를 저장할 수 있으므로 재사용이 가능합니다. malloc()/realloc()을 사용하여 구현하려고하면 크기가 지정되지 않은 void 포인터로 인해 포인터 계산을하는 동안 오류가 발생합니다.
무엇이 가장 좋음
C에서 동적으로 크기를 조정할 수있는 스택을 구현하는 방법은 무엇입니까?
편집 :
가이 코드 같은 것을 시도하고 있었다 (오류가 제거 검사)하지만 난 지금은이 같은 무효 포인터와 상호 작용 할 수 있음을 이해합니다. 그래서 나는 이처럼 합법적으로 어떻게 할 것인가를 생각하고 있습니다. 이것은 내가 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);
}
일부 코드는 게시하십시오. 포인터 자체가 가리키는 내용에 관계없이 포인터 자체는 고정 된 양의 메모리를 사용해야합니다. –
"최고"는 무엇을 의미합니까? –
기본적으로 두 가지 방법이 있습니다. 1) 성장하는 배열을 사용하고, 2) 연결된 목록을 사용합니다. 무엇이 가장 잘 작동하는지 (또는 올바른지) 필요한 부분에 달려 있습니다. – MAK