我有一些C代码在这里指针分配并返回到父调用者/父函数。使用GDB,我注意到指针分配很好,但是当我返回时,它丢失了地址前四个字节的高位。基本上,它是这样的:C指针的麻烦:它从函数返回时丢失地址信息
allocate pointer A
allocate pointer B
Free A
Return B
现在,如果我更改为:
allocate pointer B
allocate pointer A
Free A
Return B
事情做工精细。奇怪的是,这段代码工作正常5年以上,现在它给我们带来了一些非常特殊情况下的麻烦。我们担心的是,地址被改变了,我们无法以其他方式检测到这个错误,只有当我们连接gdb并开始环顾四周时,我们才看到了改变。
任何人在这里看到类似的东西或知道为什么会发生这种情况?顺便说一句,我们不是试图写更多的东西,我们可以在A或B中处理,两个缓冲区都适合数据大小。
在此先感谢您的任何线索。
如果没有任何代码检查,很难回答这个问题。 – 2010-12-08 19:17:00
这很含糊。 – 2010-12-08 19:17:07
你不`分配一个指针`,你`分配指针引用的数据`。 – 2010-12-08 19:18:02