c++中几个段错误调试记录
来源:互联网 发布:java svn资源库导出去 编辑:程序博客网 时间:2024/04/27 22:46
1 线程中调用一个外部函数出现 段错误,但是在主线程中却正常
解决方法:将该线程的stack_size设置大一点,因为外部函数可能需要的内存资源比较多,默认的stack_size不够
设置方法如下:
bool start(void*(*thread_proc)(void*),void* arg,size_t stack_size=16*1024){ pthread_attr_t attr; size_t stacksize; pthread_attr_init(&attr); pthread_attr_setstacksize(&attr,stack_size); int res=pthread_create(&thread,&attr,thread_proc,(void*)arg); if(res!=0) { thread=0; } return res==0; }
2 pthread_create 方法传入的方法只能是一个静态方法,如果需要用成员函数,可以在类里添加一个static的中间方法,将对象当作参数传进去,在中间方法中调用对象的方法即可。
申明:
static void* thread_proc_callback(void* arg); void proc_callback();实现:
void CCamera::proc_callback() { cout<<"proc_callback enter...."<<endl; this->thread_event_ready=true; imgframe* item; while(!disqueue->stop) { item=disqueue->remove();//will loop to get item until success if(item!=NULL) OnSensorData(*item); delete item; } cout<<"proc_callback exit...."<<endl; } void* CCamera::thread_proc_callback(void* arg) { ((CCamera*)arg)->proc_callback(); }调用:
thread_event.start(thread_proc_callback,(void*)this)
记得最后一个参数this,否则proc_callback()里面将会出现this=0,段错误。
3 pure virtual method called 错误
如果父类中有一个纯虚函数,子类实现,父类中有个线程在持续调用该虚函数。在构析该对象时,就会出现调用纯虚函数的错误,这是因为,构析的时候,子类先进行构系,因此方法的子类实现被构析,线程里面调用时,只能调用父类的了,但是父类中是纯虚函数。
解决方法,要么在父类中实现纯虚函数,要么构析前先将线程kill掉
阅读全文
0 0
- c++中几个段错误调试记录
- c语言中常见的几个段错误
- C语言段错误调试
- gdb 中使用 core 调试段错误
- 段错误的调试
- Linux段错误调试
- 段错误 gdb调试
- gdb 调试段错误
- gdb 调试 段错误
- GDB 调试段错误
- 段错误调试
- 段错误调试经验
- GDB 调试段错误
- gdb调试段错误
- 段错误调试方法
- 段错误调试
- 段错误调试
- 如何调试段错误
- PIC单片机入门_定时器TMR2详解与实例
- CAP理论(分布式)
- 3. Flume 启动命令
- 征信良好,为什么只有你的贷款额度低
- 练习66
- c++中几个段错误调试记录
- iOS学习笔记之WIFI技术
- Android快速开发-选项卡
- android sudio 如何获取Sha1(调试版和发布版)
- HTML5 中canvas支持触摸屏的签名面板
- Python错误整理
- 用服务和广播去监听系统网络状态的连接操作
- 作业管理
- oracle DBaaS 数据库云服务实践之一概要文件创建错误(Host credential should not be a root user)