• ベストアンサー

64bitでメモリアロケートエラーは起きますか

メモリを動的に割り当てた際、メモリ割り当てに失敗するとメモリアロケートエラーが発生しますが、 64bit環境でもこれは発生しますか。 理論上は発生するとして、現実的なレベルで発生することはありますか。 発生する場合はどのようなときに発生しますか。

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>メモリアロケートエラーが発生する、具体的な例を挙げていただけませんか。 $ uname -a Linux fedora64 3.14.4-200.fc20.x86_64 #1 SMP Tue May 13 13:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $ cat memalloc.c #include <errno.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv) { void *p = malloc(32L*1024*1024*1024); printf("%s\n", strerror(errno)); printf("%p\n", p); return 0; } $ cc -o memalloc memalloc.c $ ./memalloc Cannot allocate memory (nil) $ ちなみにFreeBSD 10だと同プログラムでも確保できたような結果にはなります(実際にアクセスする際にエラーになるんだろうけど)。 % uname -a FreeBSD * 10.0-STABLE FreeBSD 10.0-STABLE #1: Sun Apr 27 14:03:05 JST 2014 * amd64 % ./memalloc No such file or directory 0x801000000 % アドレス空間が64ビットあったところで物理メモリ+スワップを超える量をどうやって確保します?(「物理メモリ+スワップ」というのは例えです。この辺はシステムによって異なります)

nanako_04
質問者

お礼

ソースコードを付けた回答ありがとうございます。 これを参考にさらに調べてみようと思います。

その他の回答 (2)

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

たぶん, 1 PB くらい確保しようとしたら失敗するんじゃないかな. いろんな事情で成功したように見えるかもしれんけど.

nanako_04
質問者

お礼

回答ありがとうございます。 いろんな事情というのは、、、たとえばどんなことでしょうか。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>64bit環境でもこれは発生しますか。 発生します。 >理論上は発生するとして、現実的なレベルで発生することはありますか。 あります。 >発生する場合はどのようなときに発生しますか。 ふつうにメモリが足りないときです。 64bit環境だからといって無制限にメモリを使えるわけじゃありませんし。

nanako_04
質問者

お礼

回答ありがとうございます。 メモリアロケートエラーが発生する、具体的な例を挙げていただけませんか。

関連するQ&A