c - 在另一个 .c 文件的函数中使用函数?

标签 c arrays

我正在尝试通过另一个函数更改数组的大小。代码编译但程序崩溃......我卡住了,非常卡住了。新来的,我的头在左上右下旋转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
}

ma​​in.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/

相关文章:

c - 如何在不使用sizeof的情况下找到变量的大小

使用Makefiles编译不同目录下的C程序

javascript - 使用javascript从数组创建一个对象

c - 为什么这个简单的程序会崩溃?

python - Python中的子集数据

C 按升序或降序打印二维数组元素

c - 使用函数 strcmp 比较指针和字符串

c++ - 我可以在 C 中存储指向 C++ 类的指针吗?

c - 如何在不使用 EOF 的情况下读取输入文件的下一行直到文件末尾

arrays - 如何将数据插入到结构中