首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >unsigned int*赋值更改目标unsigned int

unsigned int*赋值更改目标unsigned int
EN

Stack Overflow用户
提问于 2011-03-25 01:03:16
回答 1查看 283关注 0票数 0

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

代码语言:javascript
复制
    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);

输出:

代码语言:javascript
复制
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文件中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-25 01:17:25

对于第二个output语句,如果同时输出vtxIdx*tgtIdx的值,是否会得到相同的结果

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

如果您使用完全相同的参数连续运行每个NSLog函数两次,那么它们是否每次都输出相同的内容?

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

编辑:还有一些想法。

如果注释掉tgtIdx = &vtxIdx;行,会发生什么?

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5422795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档