Chinaunix首页 | 论坛 | 博客
  • 博客访问: 128819
  • 博文数量: 106
  • 博客积分: 2145
  • 博客等级: 大尉
  • 技术积分: 1080
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-31 14:42
文章分类

全部博文(106)

文章存档

2013年(2)

2012年(25)

2011年(79)

我的朋友

分类:

2011-06-03 17:03:52

   原来正确的函数,为了给函数里面的实现传递一个参数,于是就按照自己认为正确的方式写成 &struct_a->item_b. 原意是传递A指针指向的结构体中的B的地址过去,也就是B的指针。这个函数的前面也有一个参数是同样类型,所以自己就照着它的来写。
   上午改完后,编译通过,但是却得到一个段错误。很奇怪的错误,gdb跟的话,也只跟到调用了这个修改后的函数的函数完成。如A函数调用B函数,我修改了B函数中的参数,按照上面写的,多加了一个参数。而C函数调用了A函数, 在C函数中,A函数结束后,就出现段错误。显示的是struct_a指向了一个不可使用的地址。也就是我修改C函数后,把struct_a的值修改了。
    查了一遍相关的所有代码,没有任何地方有修改过这个地址所指向的值。最初以为是哪里的逻辑有问题,所以来来回回看了很多代码。后来把函数还原为改之前的样子,运行就没有问题。所以,那只能是我加的这个参数的问题。后来改成&(struct_a->item_b),程序运行正确。回去看了下item_b的类型,是一个指针。我不知道是不是因为指针的原因。
    最难找的bug,其实真的不是什么大的错误,可能只是不小心少写的一个符号。不要太想当然的写代码了。

阅读(336) | 评论(0) | 转发(0) |
0

上一篇:criminal Minds S1e14

下一篇:驾校科三考试

给主人留下些什么吧!~~