gpt4 book ai didi

C指针故障: it loses address information when returned from a function

转载 作者:行者123 更新时间:2023-12-01 11:57:57 25 4
gpt4 key购买 nike

我这里有一些 C 代码,其中分配了一个指针并将其返回给父调用者/父函数。使用 GDB,我注意到指针分配很好,但是当我返回它时,它丢失了地址前四个字节的高位。基本上它是这样的:

allocate pointer A
allocate pointer B
Free A
Return B

现在,如果我将其更改为:

allocate pointer B
allocate pointer A
Free A
Return B

一切正常。奇怪的是,这段代码运行了 5 年多,现在却在某些非常具体的情况下给我们带来了麻烦。令我们担心的是地址已更改,我们无法以任何其他方式检测到此错误,只有当我们附加 gdb 并开始环顾四周时我们才能看到更改。

这里有人见过类似的东西或知道为什么会这样吗?顺便说一句,我们不会尝试在 A 或 B 中写入超出我们处理能力的内容,两个缓冲区的大小都适合数据。

提前感谢您提供任何线索。

最佳答案

听起来好像您没有声明函数的原型(prototype)。这在 intvoid* 具有相同宽度的 32 位机器上运行多年。现在这些不同了,你丢失了高位字节。

我想你用 -Wall 或类似的东西编译吧?

关于C指针故障: it loses address information when returned from a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4391324/

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