当前位置:  技术问答>linux和unix

Linux下C编程问题:段错误,Program received signal SIGSEGV, Segmentation fault.请教各位!

    来源: 互联网  发布时间:2015-05-09

    本文导语:  Linux下C编程问题: 段错误,Program received signal SIGSEGV, Segmentation fault.请教各位! 下面是我调试时的一些信息: [root@localhost Practice]# gcc -o p1 -g p1.c [root@localhost Practice]# ./p1 段错误 [root@localhost Practice]# gdb p1 GN...

Linux下C编程问题:
段错误,Program received signal SIGSEGV, Segmentation fault.请教各位!

下面是我调试时的一些信息:
[root@localhost Practice]# gcc -o p1 -g p1.c
[root@localhost Practice]# ./p1
段错误
[root@localhost Practice]# gdb p1
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) run
Starting program: /usr/Practice/p1
Program received signal SIGSEGV, Segmentation fault.
0x420791b5 in strcat () from /lib/tls/libc.so.6
(gdb) where
#0  0x420791b5 in strcat () from /lib/tls/libc.so.6
#1  0x08048ac4 in __libc_csu_init ()
#2  0x0804872b in main (argc=1, argv=0xbfffdfe4) at p1.c:46
#3  0x42015574 in __libc_start_main () from /lib/tls/libc.so.6
(gdb) list
46                lineBuf = sample("/cpuinfo",1,0);
47                //strcpy(lineBuf,sample("/cpuinfo",1,0));
48                //printf("nCPU Information:n%s",sample("/cpuinfo",1,0));
49                //free(lineBuf);
50                lineBuf = sample("/cpuinfo",4,0);
51                printf("%s",lineBuf);
52                lineBuf = sample("/cpuinfo",6,0);
53                printf("%s",lineBuf);
54                //printf("nKill you!");
55
(gdb)

相关声明:
#define MAX_BUF_LINE 200
char * lineBuf = (char *)malloc(MAX_BUF_LINE);
char * sample(char *,const int,const int);

给lineBuf赋值时出错,
直接printf("nCPU Information:n%s",sample("/cpuinfo",1,0));也出错,
该了好久都没改好,请教大家,谢谢!

|
就错在pathName = strcat("/proc",fileName);这行
首先"/proc",是静态字符串,他的存储空间在编译期间已经分配,大小是固定的
你使用strcat,将fileName向"/proc"后面添加,当然会出错,
另外,你需要仔细阅读一下strcat的用法

|
同意blh(老猫)的说法,你可以
char *tmp=(char *)malloc(100);
memset(tmp,0x0,100);
memcpy(tmp,"/porc",5);

然后将pathName = strcat("/proc",fileName);改为
pathName = strcat(tmp,fileName);

原因同blh(老猫)

|
char * lineBuf = (char *)malloc(MAX_BUF_LINE);
这句话有错,没有告诉运行时库你申请的内存数据是什么类型的,应改为:
char * lineBuf = (char *)malloc(sizeof (char) * MAX_BUF_LINE);

|
sorry,sizeof后面没有空格,敲错了

|
你的strcat在哪儿阿??????

|
把程序贴上来吧,这样看好累呀

|
http://expert.csdn.net/Expert/topic/2426/2426475.xml?temp=.4317896

    
 
 

您可能感兴趣的文章:

  • linux+SDL segmentation fault
  • linux下信号11 (Segmentation violation (ANSI))是何种错误,急!急!急!急!
  • 请教关于在redhat linux 9下的rhide1.5.1和dev-c++运行错误:Segmentation fault
  • Linux 下 memcpy()有Segmentation fault
  • 求救:linux 执行sort时报Segmentation fault 错误
  • linux中C程序出现Segmentation fault。。。
  • linux C程序,请问下面一个程序为什么会出现Segmentation fault ??
  • 在linux下编译程序,在程序结束时出现segmentation fault..实在想不通,求教高手!!
  • 请各位linux高手帮忙, Segmentation fault 错误
  • linux下运行C程序的错误信息为 segmentation fault
  • install exit abnormally -- received signal 11(硬盘安装linux失败)
  • 要实现message进程通信的send()和receive()在linux中应该添加什么头文件或导入怎样的库呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 向linux达人请教linux下5.1声道测试工具
  • 请教一下,如果想在linux下开发java,选哪个版本的linux好一点
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的?
  • 请教:linux启动盘和一张盘的linux有何区别?
  • 请教linux高手,在Linux
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 初次接触linux,关于linux 用户权限问题请教!
  • 请教linux 下的adsl拨号问题.
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 各位大狭!小弟初学Linux,请各位列举学Linux的网站,留下QQ,Email以向各位请教!!!多谢了!!!
  • 菜鸟请教Linux
  • 高手看过来:请教如何在移动硬盘上安装Linux?
  • 请教:如何在Linux下获得EDID信息
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 请教大家一下,linux运维方面的书应该读什么?
  • 请教:如何直接使用RedHat Linux 9的ISO文件安装Linux?
  • 我的linux装不上啊???请教高手
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3