掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
安全に大きなサイズのメモリを確保するには? (ID:50046)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
今更ですが……。 まず, TRY - CATCHではなく,try - catchのC++例外を使った方がいいです。 現在,MFCもC++の例外を利用しています。 それでもって,ISO/IEC 14882:1998では,newに失敗するとstd::bad_alloc例外を発生させます。 VC++の場合,VC++ 6.0まではNULLを返す時代錯誤の仕様ですが, VC++.NETでは,C++の標準ライブラリを使うとstd::bad_alllocを投げるようになります。 なので,普通のメモリ確保は char *p; try { p = new char [300000]; } catch (std::bad_alloc &) { // エラー処理 } となります。もっとも, std::vector<char> p; try { p.resize(300000); } catch (std::bad_alloc &) { // エラー処理 } の方が勧められますが。 あと,4Kバイトごとなのは,80386以降のCPUの制限です。 80386以降のCPUでは,メモリを4Kバイトのページを単位として割り付けています。 VirtualAllocなどのAPIでは,その制限をもろに受けます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.