gpt4 book ai didi

iphone - unsigned int* 赋值改变目标 unsigned int

转载 作者:行者123 更新时间:2023-11-28 08:22:08 27 4
gpt4 key购买 nike

好吧,这一定很愚蠢。我在移动一些代码时遇到了这个问题,并认为我打错了字或未能正确使用调试器。作为健全性检查,我创建了这个测试用例,但它似乎仍然失败。

    unsigned int  vtxIdx = 0;
unsigned int* tgtIdx;

NSLog(@"Init %d", vtxIdx);

tgtIdx = &vtxIdx;

NSLog(@"After %d", vtxIdx);

float* pVtx = new float[1000*3];

NSLog(@"After more %d", vtxIdx);

输出:

2011-03-24 09:59:23.494 Game-iOS[] Init 0
2011-03-24 09:59:25.677 Game-iOS[] After 4
2011-03-24 09:59:31.828 Game-iOS[] After more 12

编辑:

最初让我失望的是我在 XCode 变量窗口中看到了奇怪的值。所以我不认为这是一个 NSLog 问题,因为我在 XCode 中看到了相同的值。在调试器中观察 vtxIdx,每条指令似乎增加 4。

如果重要的话,所有这些代码都在 .mm 文件中。

最佳答案

对于你的第二个输出语句,如果你打印 vtxIdx*tgtIdx 的值,你会得到同样的结果吗?

如果你初始化 tgtIdx = NULL; 会有什么变化吗?

如果您使用完全相同的参数连续运行每个 NSLog 函数两次,它们每次都输出相同的东西吗?

您在问题中提到了调试器。当您单步执行该程序时,您看到了什么?

编辑:还有一些想法。

如果注释掉 tgtIdx = &vtxIdx; 行会怎样?

如果在现有变量声明之前添加行 unsigned int dummy; 会发生什么情况?

因为似乎有什​​么东西在背后改变变量,我的第一个想法是内存损坏问题(一些其他代码无意中覆盖了您的变量)或链接问题(链接器看到您的变量和另一个具有相同变量的变量name,认为它们是同一个对象,并将它们合并在一起)。添加虚拟变量声明应该有助于指示问题是否是内存损坏问题,重命名变量应该测试任何可能的名称解析冲突。

关于iphone - unsigned int* 赋值改变目标 unsigned int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422795/

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