• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:取ってこれないメモリのはずのmallocの動作)

mallocの動作とコンパイル仕様について

このQ&Aのポイント
  • mallocの動作とコンパイルの仕様について質問があります。
  • 32bitと64bitのUbuntuのgccとMacのgccでの動作の違いについて知りたいです。
  • Ubuntuでのメモリの取得制限と実際の動作が気になります。

質問者が選んだベストアンサー

  • ベストアンサー
  • colder
  • ベストアンサー率43% (30/69)
回答No.2

http://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/malloc.3.html >デフォルトでは、Linux は楽観的メモリ配置戦略を用いている。つまり、 malloc() が NULL でない値を返しても、そのメモリが実際に利用可能であること が保証されない。

nasanaut
質問者

お礼

回答ありがとうございます.大変参考になるリッファレンスをありがとうございます.

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

ついでだけど, 「Macでの2GB」ってなんのことですか? 実際に「確保しようとしたサイズ」はいくつですか?

nasanaut
質問者

お礼

返信ありがとうございます.上のプログラムは確保するsizeをインクリメントしていき,どこでどういう動作になるか見るプログラムでした.2GBというのは,Macがエラーを吐き始めたsize=2048, つまり2048*1024*1024byteで2GBという意味でした.

すると、全ての回答が全文表示されます。
回答No.3

tmp が NULL でないことを検証せにゃイカンのとちゃいます? mallocはメモリが確保できんかったらNULL返すんしょ?

nasanaut
質問者

お礼

回答ありがとうございます.チェックしてみたところ僕の環境だとMac, Ubuntuともに2048MB=2GB確保しようとしたところでNULLが返ってくるようですね.

すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

エラーが出るかどうかは OS の違いだと思う. で, malloc でメモリが取れなかったときどうなるか, 仕様をちゃんと確認してください.

nasanaut
質問者

お礼

返信ありがとうございます.OSの違いのようですね.もう少し勉強してみます.

すると、全ての回答が全文表示されます。