• 《C库 — 字符串合并函数strcat 字符串常量导致程序崩溃》


    1.例程

    #include<stdio.h>
    #include<string.h> int main(void) { char a[10]="123"; char b[10]="abc"; strcat(a,b); //连接两个字符串,连接后的字符串存袭放在a中,数组a中有足够空间 printf("%s",a); //输出连接后的字符串 }

    2.错误例程

    #include<stdio.h>
    #include<string.h> int main(void) { char *a="123"; char *b="abc"; strcat(a,b); //连接两个字符串,连接后的字符串存袭放在a中,数组a中有足够空间 printf("%s",a); //输出连接后的字符串 }

      可以编译通过,但是运行的时候会提示段错误。

      问题原因:a和b都是字符串常量,属于只读(数据只读数据段),写只读数据段会发生权限问题的缺页中断,内核会发送SIG_SEGV信号终止进程(段错误),如果发生在内核空间会导致系统崩溃,。

     

  • 相关阅读:
    我的项目物业收费
    我的项目人员定位
    我的简历
    我的项目证券分析
    MSIL探索-序
    VC++深入详解笔记.cpp
    减少图片分辨率
    PL/SQL Developer 7.1 正式版 完美破解
    Lamp软件环境安装
    CentOS 6.4 安装
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/12697857.html
Copyright © 2020-2023  润新知