gpt4 book ai didi

c - 重新分配() : invalid next size

转载 作者:行者123 更新时间:2023-11-30 20:38:25 27 4
gpt4 key购买 nike

我在论坛上阅读了一些有关此类问题的帖子,但我仍然无法弄清楚。

我正在编写一个堆栈实现代码,但我陷入了当堆栈已满时必须重新分配内存并使数组比以前大两倍的部分。

这是我的推送功能代码;

typedef struct stackImp *Stack;
typedef int Item;

struct stackImp{
Item * items;
int top;
int maxSize;

void push (Stack stack, Item item){
assert(stack != NULL);
Item *temp;
if (stack->top < stack->maxSize+1) {
stack->items[stack->top] = item;
stack->top++;
}
else {
temp = realloc(stack->items, 2*(stack->maxSize) * sizeof(Item));
assert (temp != NULL);
stack->items = temp;
stack->items[stack->top] = item;
stack->top++;
stack->maxSize = (stack->maxSize)*2;
}
}

我不断收到的错误是:enter image description here来自 Valgrind 的消息:enter image description here

有人可以解释一下发生了什么吗?

最佳答案

你在这里落后一分:

if (stack->top < stack->maxSize+1) {
stack->items[stack->top] = item;

stack->items[index]的有效索引为[0..maxSize-1],因此需要将条件更改为:

if (stack->top < stack->maxSize) {
stack->items[stack->top] = item;

关于c - 重新分配() : invalid next size,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29121458/

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