【发布时间】:2011-11-24 09:01:20
【问题描述】:
我有一个函数
void* fn( void* ptr ){...}
我在 pthread 中用作启动方法。在函数的某个地方,我收到一个错误,其中 ptr(通常指向一个结构)从其原始值更改为 0x100000000000000(从 printf("%p") ),尽管函数 fn 没有被分配给它,我是只读取它的值,如ptr->value。有什么想法吗?
【问题讨论】:
-
没有代码,我们无法分辨。但是确定你没有不小心在某个地方使用了
=而不是==? -
@DarkDust 我不仅不将 ptr 与任何东西进行比较,我也不将它的任何子值与任何东西进行比较,我只使用它们来分配其他值或传递给函数。问题是我没有分配给 ptr,也没有将 &ptr 传递给任何东西,那么 ptr 怎么可能改变呢?
-
具体向我们展示了 ptr 最初指向的内容以及分配方式/位置。可能是 ptr 在程序执行过程中超出范围