其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
编程经验点滴

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

1、定义字符串的问题

一个朋友在开发中遇到的问题,
TC3下编译通过,运行正常;
VC6下编译通过,运行出现越界错误;
Linux 下gcc version 3.2.2 编译通过,运行出现 Segmentation Fault 错误。

【源程序】

//test1.cpp

 

#include <stdio.h>

#include <string.h>

 

int main()

{

       char ch;

       char *s="hello!";

       int i=0;

 

       int j=strlen(s)-1;

       while(j>i)

       {

              printf("\ni=%s \t j=%s", i, j);

              ch=s[j];

              s[j]=s[i];

              s[i]=ch;

              i++;

              j--;

       }

       printf("%s\n",s);

       getch();

       return 0;

}

【linux下的情况描述】
g++  test1.cpp -o test1
./test1
Segmentation fault
在出现错误提示之前无任何输出,单步调试在return之前都正常。

【可能原因】
        gcc 把“char *s = "hello!"”这种形式解释成 s 指向一个常数的空间,所以不能进行赋值操作(把while中的赋值语句取消就没有问题)。

【解决办法】
        定义的形式换为“char s[] = "hello!"”。

【未完问题】
        水平高了以后看看汇编的代码,看看为什么会出现“Segmentation Fault”。





相关文章

相关软件