C语言malloc编译报错:initializer element is not constant(不能将全局变量初始化为一个无法在编译时期确定的值)

Posted Dontla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言malloc编译报错:initializer element is not constant(不能将全局变量初始化为一个无法在编译时期确定的值)相关的知识,希望对你有一定的参考价值。

定义在全局:

char* save_video_box_buffer = (char*)malloc(1920*1080*3/2);

编译报错:

ky_ai_camera_engine_origin.c:737:31: error: initializer element is not constant

原因:

不能将全局变量初始化为一个无法在编译时期确定的值。
编译器在生成目标文件时,需要将代码段、数据段(初始化了的全局变量和静态变量,未初始化的不会占用磁盘空间)写入目标文件,因此需要在编译时期确定全局变量的值,而 malloc 需要在运行时分配内存,所以就出现这个错误了。

解决办法:
可以放在main函数里初始化,然后通过传参的方式让其他函数或线程调用

参考文章:C语言出现 “initializer element is not constant” 错误的原因

以上是关于C语言malloc编译报错:initializer element is not constant(不能将全局变量初始化为一个无法在编译时期确定的值)的主要内容,如果未能解决你的问题,请参考以下文章

Mac编译mcrypt报错malloc.h不存在

评:C语言18个经典问题答录

C语言编译报错:incompatible pointer type [-Wincompatible-pointer-types](传参类型不匹配)

c语言动态库的加载问题!!!!请高手指点!!!!!!!!

C语言中已经有了malloc和free,为啥还需要new和delete?

C语言,realloc动态内存申请,出现报错double free or corruption (!prev)