今日、私はmalloc(1024)と呼んで、ヒープで遊んでいました。私はヒープの構造をほとんど理解しているので、何が記憶されているかを印刷すると、「00000000 00000409 00000000 00000000 ....」と表示されていました。ヒープには何がありますか? C linux
1032バイトヒープの一番上のチャンクを見つける。代わりに、malloc(1024)の別の呼び出しが私の最初のものの後に起こったかのように、別の塊を見つけました。このチャンクで
は次のとおりです。
00000000 00000409 30387830 65336234
30203a30 30303030 20303030 30303030
30303030 30303020 30303030 30302030
34303030 33203930 33303330 20303330
30333033 30333032 33343320 33303330
33332030 39333032 000a3233 00000000
に変換され:これが存在する理由、誰もが知ってい
08x0e3b40 :00000 00000000000000 000000 040003 903030 03003030302343 303033#09302
23
?私はmallocを一度呼び出すだけだと確信しています。そして、私はどんなサイズのmallocでも常にそこにいるようです。
マシンには他にも何かがあるので、また何を期待していたのですか? (例:*「ヒープの一番上のチャンク」とは何ですか?) – UnholySheep
多分ゼロを含む文字列でprintを呼び出すことはありませんでしたか? ASCII 30303030? – stark
'brk'の移動量(データセグメントサイズの変更)は、アロケータによって異なります。あなたが実際にあなたの 'malloc'呼び出しで要求した以上に動かすかもしれません。したがって、データが必ずしもヒープの先頭にあるとは限りません。 – Arash