次のコードでは:
char *p = "Linux";
「Linux」のメモリはスタックにありますか、それともプログラムの読み取り専用セグメントですか?
記事12興味深いCインタビューの質問と回答の質問9を参照してください。
ありがとう。
次のコードでは:
char *p = "Linux";
「Linux」のメモリはスタックにありますか、それともプログラムの読み取り専用セグメントですか?
記事12興味深いCインタビューの質問と回答の質問9を参照してください。
ありがとう。
実装は、必要な場所に自由に保存できます。これは定数であるため、読み取り専用メモリに含めることができますが、必須ではありません。
私のCプログラミングのインストラクターは、常にスタック上でそれを言っているので、疑問があります。
彼はおそらくポインタを意味します。検討:
char *p = "Linux";
p = "Rules";
2行目では、「Linux」を指すものから「Rules」を指すものに変更されました。変更されたばかりのものはスタック上にあります。
リンクが示すように、動的に割り当てられたメモリではなく、コード自体が存在するメモリに格納されます。つまり、読み取り専用セクションです。したがって、それを変更しようとすると、セグメンテーション違反が発生します。