とても面白い質問を見つけました。
次のコードを使用している場合:
int main() {
char * in = "hi, ";
char str[10];
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
私の結果は何もありません、printf
うまくいきませんでした。
しかし、私がこれを使用する場合:
int main() {
char * in = "hi, ";
char * str = malloc(sizeof(char) * 10) ;
strncpy(str, in, 2);
printf("output = %s", str);
return 0;
}
期待通りの結果が得られます。
なぜこれが起こるのですか?スタックとヒープのせいですか?それはどのくらい正確にこの大きな違いを生むのでしょうか?