これは、私が勉強している試験問題に出題された問題です。
「以下のコードを調べてください。32 ビット Linux プロセスのアドレス空間の構成を示す図を描いてください。図に、a、b、c、*c (つまり、c が指すメモリ)、malloc のおおよその位置にラベルを付けます。そしてメイン」
int a; int b = 10;
int main()
{
char *c;
c = malloc(b);
return (0);
}
これが私の見解です、間違っていたら訂正してください。
a は初期化されていないグローバル変数であるため、ゼロに初期化されて BSS に格納されます。b は初期化されたグローバル変数であるため、データ セグメントに移動します。*c は自動変数なので、スタックに格納されます。c は動的に割り当てられるため、ヒープに移動します。Main は実行コードなので、テキストに格納されます。
malloc の部分についてはよくわかりませんが、テキストにも入るプログラムコードだけですか、それとも関数呼び出しとしてスタックにあるのでしょうか?