尝试进行内存分配时出现访问冲突错误

时间:2015-03-23 15:49:43

标签: c arrays pointers dynamic malloc

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;
}

我正在尝试为动态数组创建自己的库。只是为了学习和提高自己。请查看我的代码。我做错了什么?

2 个答案:

答案 0 :(得分:3)

您在此处取消引用未初始化的指针:

DynamicArray *array;  // uninitialized
(*array).array = .... // ooops

您需要让array指向您可以写入的内存。例如

DynamicArray *array = malloc(sizeof(DynamicArray));

答案 1 :(得分:0)

首先使用它:

DynamicArray *array;
array = (DynamicArray *)malloc(sizeof(struct DynamicArray));
array->array = ...

如果你没有初始化一个点,你就不能取消引用它,因为它指向NULL。