c/c++语言开发共享在另一个.c文件中使用函数内部的函数?

我试图从另一个函数更改数组的大小。 代码编译但程序崩溃了…我卡住了,非常困难。 新的,我的头向左旋转aaaaah ……..

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

array.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); 

    在这里你释放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; } 

    应该是free(array->data)不是free(array) 。 或者更好的realloc array->data

    此外,除非您正在寻找麻烦,否则请在.h文件中声明您的函数,就像在.c文件中一样,即:

     struct array; struct array *array_create(); 

    并从array.c包含array.c

      以上就是c/c++开发分享在另一个.c文件中使用函数内部的函数?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519468.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐