gpt4 book ai didi

c - 这里怎么修改这个变量的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:28:09 26 4
gpt4 key购买 nike

好的,我有来自 SPLASH2 的基准测试,我用它来测试我创建的工具。基准具有以下结构。

typedef struct _interact {
struct _interact *next ; /* Next entry of the list */
Element *destination ; /* Partner of the interaction */
float formfactor_out ; /* Form factor from this patch */
float formfactor_err ; /* Error of FF */
float area_ratio ; /* Area(this) / Area(dest) */
float visibility ; /* Visibility (0 - 1.0) */
} Interaction ;

查看代码,我发现从未使用过area_ratio。但是,最后,我看到 area_ratio 的值不像开始时那样为 0。所以我在这个变量上放置了一个观察点,令人惊讶的是 gdb 向我指出了修改 visibility(area_ratio 下方的变量)的代码。

现在我的问题是为什么会这样。为什么area_ratio是通过修改visibility来修改的。有哪些可能性?有什么线索吗?我真的很困惑。请注意,我正在 64 位机器上测试我的程序。也许 64 位必须对它做些什么,但我不知道!

代码是这样的:

/* Create links and finish the job */
inter = get_interaction(process_id) ;
*inter = i12 ;
inter->visibility = VISIBILITY_UNDEF ; // <---- This is what gdb is pointing to

最佳答案

啊,我明白了!实际上发生的事情是 i12 是一个局部变量,它没有初始化为 0,当我们执行 *inter = i12; 时,area_ratioi12 的 > 分配给 *inter 并且由于 i12area_ratio 是随机的并且不一定为 0,因此area_ratio 的值分配给 *inter

顺便说一下,现在我意识到 gdb 显示了预期行下方的行号,因此它没有指向行 inter->visibility = VISIBILITY_UNDEF ,但是行 *inter = i12;

关于c - 这里怎么修改这个变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051263/

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