gpt4 book ai didi

c - 在 C 中实现动态调整堆栈大小的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 06:44:40 27 4
gpt4 key购买 nike

在 C 中实现动态调整堆栈大小的 最佳 正确方法是什么?

例如,我想为一个堆栈分配一定数量的内存,但是当该堆栈变满时,分配的内存会加倍以容纳新数据等。

我当时使用一个简单的 void 指针数组实现了一个堆栈,这样我就可以存储所有类型的指针,因此它非常可重用。当我尝试使用 malloc()/realloc() 实现此功能时,由于没有分配大小的 void 指针,我在进行指针数学运算时遇到了错误。

在 C 中实现可动态调整大小的堆栈的 最佳 正确方法是什么?

编辑:

我正在尝试类似这段代码(删除了错误检查)但我现在明白我不能像这样与 void 指针交互。所以我只是在想如何合法地做这样的事情。这对我来说是一个很大的学习练习,因为我从未真正接触过 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);
}

最佳答案

我认为问题在于您在通话中使用了错误的尺寸。您不需要指针对象的大小 - 您需要指针本身的大小。

关于c - 在 C 中实现动态调整堆栈大小的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2053088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com