我有以下结构:
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);
}
任何帮助将不胜感激提前
答案 0 :(得分:2)
P->array = realloc( P->array, (P->capacity) * sizeof(void*) );
调用此行时p->array
应为已分配的内存或NULL
值(如果NULL
返回新内存)。没有看到p->array
的初始化。