このコードがセグメンテーション違反を引き起こさない理由がわかりません:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (void){
char* c;
strncpy(c,"Gustave",10);
return 0;
}
そして、これは次のことを行います:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void aux (void){
char* c;
strncpy(c,"Gustave",10);
}
int main (void){
aux();
return 0;
}
私にとって、割り当てられていないメモリにアクセスしているため、2つはセグメンテーション違反を起こすはずです。
別の質問は次のとおりです。
これがセグメンテーション Fault ではなくバス エラーを引き起こすのはなぜですか :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void aux (void){
char* const c = "Bonjour";
strncpy(c,"BonjourBonjour",20);
}
int main (void){
aux();
return 0;
}