在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
当在全局变量定义一个指针变量,并动态分配内存后,发现竟然编译不过去,并提示 ""initializer element is not constant"": char *buf = malloc(1024); int main() { return 0; };
后来知道了,不能将全局变量初始化为一个无法在编译时期确定的值。再想想暑假学习的CSAPP中的链接那部分就知道为什么了。编译器在生成目标文件时,需要将代码段、数据段(初始化了的全局变量和静态变量,未初始化的不会占用磁盘空间)写入目标文件,因此需要在编译时期确定全局变量的值,而 malloc 需要在运行时分配内存,所以就出现这个错误了。 学了链接竟然没有想到这点,该死。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论