段错误问题
来源:互联网 发布:2017年经济数据 编辑:程序博客网 时间:2024/06/16 14:46
今天在学习数据结构的时候,学到二叉排序树,遇到了段错误。代码如下:
int searchInBT(pinsBT tree,int key,pinsBT parent,pinsBT* result){ if(!tree) { *result = parent; return 0; } else if(key==tree->data) { (*result) = tree; return 1; } else if(key>tree->data){ return searchInBT(tree->rchild,key,tree,result); } else{ return searchInBT(tree->lchild,key,tree,result); }}在某个函数里面调用了这个函数。
pinsBT* tst = NULL;if(searchInBT(*tree,key,NULL,tst)){ ...}结果遇到段错误,经过调试发现在运行到
(*result) = tree;出错。
原因是,result地址非法,因为在实参声明时,声明pinsBT *tst = NULL,所以在对result赋值的时候,result指向的地址是非法地址,正确的做法应该是
先声明一个pinsBT的变量,再声明一个pinsBT*的变量指向它,即:
pinsBT tmp = NULL;pinsBT* tst = &tmp;
阅读全文
0 0
- 段错误问题
- GDB 调试段错误问题
- 进程段错误问题查找
- 记一个段错误问题
- 段错误问题定位总结
- sem_open出现段错误 名字问题
- 调试段错误和指针问题
- linux开发常见段错误问题原因
- 总线错误和段错误问题的定位
- 总线错误和段错误问题的定位
- 总线错误和段错误问题的定位
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- 段错误
- linux下图形界面导向到xmanager
- WebRTC原生开发和混合开发优缺点
- C++ -- Lambda表达式
- maven 3.3.9-bin 和 maven 3.3.9-src 的区别 以及 maven安装包的 .tar.gz后缀与.zip 后缀的区别
- 阿里巴巴Java开发手册学习小结1-命名及常量定义
- 段错误问题
- git + jenkins
- 利用hexo搭建github个人博客
- freemaker获取地址栏参数
- Nginx后端节点健康检查配置使用详情
- STM32系统学习——I2C (读写EEPROM)
- Android 系统App开发日常工作技巧总结
- 堆--堆排序--heap--heap_sort
- 欢迎使用CSDN-markdown编辑器