牢骚
话说这个错误很可恶啊,昨天下午一直都有,吃完饭回来又弄,一直弄到最后要回宿舍的时候,寻思着再试一次吧,竟然查到错误了。我的程序是书上的例程,不能全信书啊!先简单记一下。
错误原因
我是受到网上这段提示“无非就是一些细节的原因,比如:声明了指针但是没有初始化,结果再后来的时候进行间接引用 ”,比如,
char *p;
char test[]="Hello" ;
strcpy(p,test);
上一段话出自;http://www.cnblogs.com/gudai/archive/2006/06/27/436601.html
而我的错误是这样的,我在做共享内存的实验时,有这样一段:
char *buff;
char *shm_addr;
fgets(buff,2048,stdin);//到这里还没出现错误
strncpy(shm_addr,buff,strlen(buff)); //到这里就出现错误了
我编译没有错误,运行时,当输入 hello时,提示出现Segmentation fault (core dumped),如下图
受到上面的启发,我将 char *buff; 一句修改成了 char buff[20]; 没错误了,并且程序运行正常了。
今天仔细一分析原因,才明白原来是我定义了指针 buff,但是在第4句中用strlen(buff),来求该指针所指的类型的长度,这家伙长度我也没给它定义,不溢出才怪呢。修改成 char buff[20]后,buff就是该数组的首地址,长度就为20。这样就不会出现错误了
分享到:
相关推荐
linux开发经常会发生Segmentation fault问题,这是网上看到的一篇博文,共享给大家;有需要的下载。
本文简单介绍了Segmentation fault发生的原因,结合实际例子描述了内核向用户态程序发送SIGSEGV信号的流程。文中以实例回答了常见的一些SIGSEGV问题,例如“为什么函数返回了栈还可以访问?”、“为什么free()后的...
collect2: fatal error: ld terminated with signal 11 [Segmentation fault], core dumped g++/gcc都不能编译了,一直抱ld的问题。网上找了很多方法都不行,弄了好久终于搞定了
Linux下的C程序常常会因为内存访问错误等原因造成segment fault(段错误),此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上来,之后可以用gdb对core文件进行分析,还原系统发生段错误时刻的堆栈...
qt-sdk-linux-x86-opensource-2009.03.bin.part5 ||QT开发SDK
项目有错误
测试CPU性能,多实例运行可以大概测试睿频!
weblogic 安装 连接池 配置 项目部署等详细文档
好用免费资源共享
这个Matlab函数执行代表离散分布特征函数的符号表达式的数值求逆,并在自定义范围内输出离散CDF。
当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映象。使用gdb调试core文件,可以帮助我们快速定位程序出现段错误的位置。当然,可执行...
下面小编就为大家带来一篇关于linux下core dump【总结】。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Python 解释器在 26186 处崩溃,说明 Segmentation fault core dumped 事实 50000 的 Julia 3.8 秒!!!!!! 哇1min 0.1s 事实 60000 Ubuntu 在 75000 内存问题下崩溃 哈斯克尔 因式递归 事实 2,00,000 => 33....
获取USB摄像头的1080p的JPEG格式的图片20180608_1806.7z 电脑上的系统:ubuntu14.04 ...// V4L2摄像头获取单幅图片测试程序(MMAP模式) // [日期:2011-03-06] 来源:Linux社区 作者:aokikyon [字体:大 中 小] ...