传递给函数的参数自己变动了

sadgod 2008-06-03 10:45:06
我传给一个函数的参数到了这个函数的内部自己就变了,怎么回事?

destroy(p);//在这里,p= 0x08123456;
到了destroy内部
只有一句话
free(p);//用GDB之类打印 p就自动变成了一个很大的数类似:0xF7654321;

程序是多线程的,请教高手这是什么原因呢?
...全文
178 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
悠悠长风 2008-06-03
  • 打赏
  • 举报
回复
1,看看是不是被别的线程改了;你可以在destroy多停一下,看看是否会变化;
2,用watch吧,这样就可以直接定位到p变化的位置;
sadgod 2008-06-03
  • 打赏
  • 举报
回复
自己顶~~
杨帆_8318 2008-06-03
  • 打赏
  • 举报
回复
mark
试试tsd啊
lihua_1687 2008-06-03
  • 打赏
  • 举报
回复
有可能是多个线程公用了p这个变量
xzdwfwt111 2008-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 悠悠长风 的回复:]
1,看看是不是被别的线程改了;你可以在destroy多停一下,看看是否会变化;
2,用watch吧,这样就可以直接定位到p变化的位置;
[/Quote]

sadgod 2008-06-03
  • 打赏
  • 举报
回复
to 悠悠长风:
被别的线程修改我估计是最可能的,但是现在问题是p的值不可能被别的线程直接修改,所以我怀疑的情况是本线程的栈被其他线程覆盖了,这种情况可能发生嘛?
geldqb 2008-06-03
  • 打赏
  • 举报
回复
mark

23,125

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧