我有以下结构:
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
。