getting segmentation fault in a small c program

后端 未结 3 1575
情书的邮戳
情书的邮戳 2020-12-12 04:08

i wrote a small prog :

  1 #include  
  2 main(){  
  3         char* str = \"string\";  
  4         *str = \'k\';  
  5         printf(\"str         


        
相关标签:
3条回答
  • 2020-12-12 04:23
    char* str = "string";
    

    This puts the string in read-only memory. It is undefined behavior (usually unpleasant behavior) when you try to modify it with the next line. Try something like

    char str[] = "string";
    

    instead.

    0 讨论(0)
  • 2020-12-12 04:28
    I also executed the given code..
    
      1 #include<stdio.h>  
      2 main(){  
      3         char* str = "string";  
      4         *str = 'k';  
      5         printf("string is = %s\n",str);
      6 }
    
     But there is no such error. 
    
     Following output is shown....
    
     String is=Ktring
    
     A segmentation fault, bus error, or access violation is generally an attempt 
     to access memory that the CPU cannot physically address. So in my opinion it's   
     completely depends on execution.
    
     thanks...
    
    0 讨论(0)
  • 2020-12-12 04:35
    char * str = "string";
    

    declares a pointer which points to an area of memory where the string "string" is stored; it's undefined behavior to write in this area of memory, and it usually results in a crash.

    Instead, you should use:

    char str[]="string";
    

    which declares a string local to your function, that is initialized to the value "string". Since the memory you are using for this string is local to your procedure you can alter it however you want.

    0 讨论(0)
提交回复
热议问题