私は会社から2つの質問に直面しました。 2つの質問が私を混乱させた。 誰でも回答の理由を説明できますか?文字列と文字に関するインタビュー質問
結果を書いてください。
void Test(void){ char *str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL){ strcpy(str, “world”); printf(str); } }
回答:それは出力 "世界"
が結果を書き込みます。
char *GetMemory(void){ char p[] = "hello world"; return p; } void Test(void){ char *str = NULL; str = GetMemory(); printf(str); }
回答:ポインタが無効なため、出力が不明です。
1. UB 2. UB ..... – BLUEPIXY
最初の質問に対する回答は正しくありません。制約違反を実行するときは何も予測できません。 – StoryTeller
[*未定義の動作*](https://en.wikipedia.org/wiki/Undefined_behavior)についてお読みになることをお勧めします。 –