打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
我曾经用过的源代码-引起segment fault的代码
from http://zhoulifa.bokee.com/6613763.html
作者:周立发2008-01-26
下面这个例子是展示引起segment fault的原因:操作不存在的内存区域
源代码是:
#include <stdio.h> /* for printf */
#include <string.h> /* for strcpy*/
/************关于本文档********************************************
*filename: coredump.c
*purpose: 说明引起segment fault错误的原因
*wrote by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com)
Linux爱好者 Linux知识传播者 SOHO族 开发者 最擅长C语言
*date time:2008-01-26 16:53 上海大雪天,据说是多年不遇
*Note: 任何人可以任意复制代码并运用这些文档,当然包括你的商业用途
* 但请遵循GPL
*Thanks to:
* Ubuntu 本程序在Ubuntu 7.10系统上测试完全正常
* Google.com 我通常通过google搜索发现许多有用的资料
*Hope:希望越来越多的人贡献自己的力量,为科学技术发展出力
* 科技站在巨人的肩膀上进步更快!感谢有开源前辈的贡献!
*********************************************************************/
int main(int argc, char ** argv)
{
char * s ;
strcpy(s, "hello");
printf("%s\n", s);
return 0;
}
编译此程序用命令:
gcc -Wall coredump.c
执行程序:
./a.out
得到输出:
Segment fault (或者中文环境下的:段错误)
正确的代码可以是这样的:
#include <stdio.h> /* for printf */
#include <string.h> /* for strcpy*/
int main(int argc, char ** argv)
{
char s[6] = "";
strcpy(s, "hello");
printf("%s\n", s);
return 0;
}
或者
#include <stdio.h> /* for printf */
#include <string.h> /* for strcpy*/
#include <stdlib.h>  /* for malloc and free*/
#include <strings.h> /* for bzero */
int main(int argc, char ** argv)
{
char * s = 0;
s = (char *)malloc(6);
bzero(s, 6);
strcpy(s, "hello");
printf("%s\n", s);
free(s);
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
main(int argc,char *argv[])
12个有趣的C语言面试题
让您的软件运行起来:实质问题和摧毁攻击
LDAP bind add modify search 等API使用的举例
Buffer overflow – Secgroup Ca' Foscari
GetMemory函数的几种经典考法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服