gpt4 book ai didi

C 变量初始化 valgrind 提示

转载 作者:太空宇宙 更新时间:2023-11-04 08:23:53 24 4
gpt4 key购买 nike

我有一个简单的问题。我有一些变量声明如下:

char long_name_VARA[]="TEST -- Gridded 450m daily Evapotranspiration (ET)";
int16 fill_PET_8day=32767;

鉴于上述 valgrind 对 char 声明的提示如下:

Invalid write of size 8
==21902== at 0x408166: main (main.c:253)
==21902== Location 0x7fe677840 is 0 bytes inside long_name_VARA[0]

对于 int16 声明如下:

==21902== Invalid write of size 2
==21902== at 0x408178: main (main.c:226)
Location 0x7fe677420 is 0 bytes inside local var "fill_PET_8day"

我在这里的声明中做错了什么?

我也不能像这样声明一个字符数组吗:

char temp_year[5]={0}

最佳答案

您引用的警告消息显示无效的内存访问,这些访问恰好命中了属于上述两个变量的内存区域。有问题的变量是错误的受害者,而不是肇事者。变数不应该归咎于此。上述声明没有错。这些声明很可能与此处无关。

肇事者是 main.c:253main.c:226 行,您还没有引用它们。那就是你的问题发生的地方。

一个疯狂的猜测是您在 fill_PET_8day 之后声明了另一个对象(一个数组?)。使用其他对象时,您会超出其内存边界约 10 个字节,从而破坏 fill_PET_8daylong_name_VARA 的前 8 个字节。这就是 valgrind 警告您的内容。

关于C 变量初始化 valgrind 提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31861083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com