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语言malloc编译报错:initializer element is not constant(不能将全局变量初始化为一个无法在编译时期确定的值)的主要内容,如果未能解决你的问题,请参考以下文章
C语言编译报错:incompatible pointer type [-Wincompatible-pointer-types](传参类型不匹配)