このコードは、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);
}
回答に感謝し、動作が定義されていないことは理にかなっていますが、これら2つの異なる未定義の動作につながる基礎となるシステムの違いに興味がありました. 彼らがメモリを管理する方法に関連していると思いますが、内部に精通していて、一方がクラッシュし、もう一方がクラッシュしない理由を説明できる人を探しています。