此代码在 cygwin 和 linux 下编译没有错误。但是当我运行它时,它在 cygwin 中运行没有错误,但它在 linux 下核心转储。
有人可以对这些系统的内存管理有所了解,以解释为什么会有不同的行为吗?
#include <stdio.h>
void foo(char *p){
p[0]='A';
}
void main(){
char *string ="Hello world!";
foo(string);
printf("%s\n", string);
}
感谢您的回答,并且没有定义行为是有道理的,但是我对导致这两种不同的未定义行为的底层系统的差异感兴趣。我想这与他们如何管理内存有关,但寻找熟悉内部结构的人可以解释为什么一个最终崩溃而另一个没有。