• 《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信号终止进程(段错误),如果发生在内核空间会导致系统崩溃,。

     

  • 相关阅读:
    VUE 路由
    JS小表达式
    JS正则表达式
    react案例—实现组件之间的通信
    React脚手架搭建
    react属性三ref
    react属性二props
    java多线程2
    jvm小结2
    spark小结3
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/12697857.html
Copyright © 2020-2023  润新知