我正在尝试通过另一个函数更改数组的大小。代码编译但程序崩溃......我卡住了,非常卡住了。新来的,我的头在左上右下旋转aaaaah.......
数组.c
struct array {
int* data;
int size;
};
struct array* array_create()
{
struct array* array = (struct array*) malloc(sizeof(struct array));
array->data = (int*) malloc(sizeof(int) * 10000);
array->size = 10000;
return array;
}
void array_resize(struct array* array, int size)
{
if (size > array->size) {
free(array);
array->data = (int*) malloc(sizeof(int) * size);
}
array->size = size;
}
int array_size(struct array* array)
{
return array->size;
}
数组.h
typedef struct array* ARRAY;
ARRAY array_create();
void array_resize(struct array* array, int size);
edit.c
void edit()
{
array_resize(array, 100); // I can run the code but program crashes
}
main.c
ARRAY array;
array = array_create();
edit(); // Program crashes
最佳答案
free(array);
array->data = (int*) malloc(sizeof(int) * size);
在这里您释放了数组
,并在下一行 取消引用它。那是未定义的行为。但似乎是你崩溃的原因。
关于c - 在另一个 .c 文件的函数中使用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661928/