程序运行产生SIGABRT信号的原因
发表于2017/2/8 14:53:31 2444人阅读
分类: C++ Linux 编程基础
原文网址:
http://m.blog.csdn.net/Season_hangzhou/article/details/54926636
目前我所知的程序运行产生SIGABRT信号的原因有三个,若还有其他情况,敬请网友留言。
(注:SIGABRT信号即signal 6的信号)
一、多次free导致的SIGABRT
#include "stdlib.h"#include "string.h"#include "stdio.hint main(){ void *pc = malloc(1024); free(pc); //free(pc); //打开注释会导致错误 printf("free ok!\n"); return 0;}
二、执行abort函数
#include "string.h"#include "stdio.h"#include "stdlib.h"int main(){ printf("before run abort!\n"); abort(); printf("after run abort!\n"); return 0;}
三、执行到assert函数
#include "string.h"#include "stdio.h"#include "assert.h"#include "stdlib.h"int main(){ printf("before run assert!\n");#if 0 //该值为0,则报错;为1,则正常 void *pc = malloc(1024);#else void *pc = NULL;#endif assert( pc != NULL ); printf("after run assert!\n"); return 0;}