gpt4 book ai didi

c - 使用动态数组在堆栈上实现 Push()

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:04 24 4
gpt4 key购买 nike

我有以下结构:

typedef struct{
void** array;
int top;
int capacity;
} ArrayStack;

和 Push() 函数如下:

void push(ArrayStack* P, void* data){
P->top++;
if(P->top <= P->capacity){
P->capacity++;
P->array = realloc( P->array, (P->capacity) * sizeof(void*) );
}

P->array[P->top] = data;
}

但是在尝试将数据分配给数组时失败了,这可能是什么问题?我在这里做错了什么?

下面是我用来测试函数 createStack() 的代码:

ArrayStack* createStack(){
ArrayStack* ret = (ArrayStack*) malloc(sizeof(ArrayStack));
ret->top = -1;
ret->capacity = 0;
return ret;
}
int main(){
ArrayStack* testStack = createStack();
int* ins = (int*) malloc(sizeof(int));
*ins = 123;
push(testStack, ins);
}

任何帮助将不胜感激提前致谢

最佳答案

P->array = realloc( P->array, (P->capacity) * sizeof(void*) );

当调用此行时,p->array 应为分配的内存或 NULL 值(如果 NULL 返回新内存)。未看到 p->array 的初始化。

关于c - 使用动态数组在堆栈上实现 Push(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105566/

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