gpt4 book ai didi

c - 传递指针: different value in stack?

转载 作者:行者123 更新时间:2023-11-30 18:07:17 25 4
gpt4 key购买 nike

我愿意:

typedef struct {
Scene *scene;
MeshStore *store;
float angle;
} DebugModel

...
free_entire_store(debug_model.store);

/* Frees the store and any meshes related to it */
void free_entire_store(MeshStore *store) {
/* implementation not important for the problem at hand */
}

现在,如果我用 gdb 在 free_entire_store 的开头放置一个断点,我会得到以下奇怪的数据..

(gdb) p debug_model  
$5 = {scene = 0x1044a680, store = 0x1044a630, angle = 87.8401108}
(gdb) p store
$6 = (MeshStore *) 0x10438b40

debug_model是全局的,上面的调试输出来自程序中的同一点。

因此,即使我只是将指针作为参数传递,它也会以某种方式发生变化。堆栈已损坏,尽管是以一种非常可预测的方式(每次运行都会出现相同的数据)。是什么导致了这种情况?我认为在调用此函数之前我没有两次释放任何东西或其他东西。作为参数传递的值怎么会与堆栈中的值不对应呢?

最佳答案

您确定断点放置正确吗?store 可能尚未分配,特别是如果您进行了优化编译。尝试在方法的第一行之后进行中断,以确保它已被分配。

关于c - 传递指针: different value in stack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740726/

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