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


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。

相关内容

  • 没有找到相关文章