我有以下结构:

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

10-08 14:31