更改结构内的数组大小

标签 c struct stack realloc

我正在尝试使用 C 中的结构和动态内存分配来模拟堆栈(将值插入和弹出到堆栈顶部),我有这个结构:

...
#define max 5

typedef struct stack  
{
    int stk[max];
    int top;
}STACK;
...

我成功模拟了堆栈,但是当它达到最大大小(堆栈已满)时,我想更改 max 的值,以便继续向堆栈顶部添加(推送)值堆。换句话说,我只想重新分配结构体 stk 字段中的最大值(如果可能的话)。

如有任何建议,我们将不胜感激。

最佳答案

使用int stk[max];不是动态内存分配。

您需要有指针int * stk;并使用malloc初始化它。然后当需要更多内存时realloc。当不再需要堆栈时,使用free释放它。

关于更改结构内的数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27148708/

相关文章:

c - 循环操作

c - 在不使用内联汇编的情况下在 C 中进行堆栈操作

c++ - 为什么结构类型的数组不能正常工作?

python - 为什么 struct 不接受字符串作为输入

java - 访问堆栈顶部元素以递归比较两个堆栈元素是否相同的方法

stack - FreeRTOS 配置MINIMAL_STACK_SIZE

c - 软终止一个简单的网络服务器

c - 外部中断 0 不工作

c - 调用结构成员时出现段错误 11

java - 通过链接堆栈反转单链表