我不明白为什么这段代码不会引发分段错误:
#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;
}
对我来说,这两个应该造成分段错误,因为我们正在访问未分配的内存。
另一个问题是:
为什么这会引发总线错误,而不是分段错误:
#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;
}