struct DynamicArray {
int allocated;
int used;
int *array;
}; typedef struct DynamicArray DynamicArray;
DynamicArray * ArrayCreate(int initialSize) {
DynamicArray *array;
(*array).array = (int*)malloc(initialSize*sizeof(int)); //Debugger points this line.
if((*array).array == NULL) {
return NULL;
}
(*array).allocated = initialSize;
(*array).used=0;
return array;
}
我正在尝试为动态数组创建自己的库。只是为了学习和提高自己。请查看我的代码。我做错了什么?
您在此处取消引用未初始化的指针:
DynamicArray *array; // uninitialized
(*array).array = .... // ooops
您需要array
指向一些可以写入的内存。例如
DynamicArray *array = malloc(sizeof(DynamicArray));
首先使用这个:
DynamicArray *array;
array = (DynamicArray *)malloc(sizeof(struct DynamicArray));
array->array = ...
如果不初始化点,则无法取消引用它,因为它指向 NULL。