【初心者歓迎】C/C++室 Ver.58【環境依存OK】 at TECH
[2ch|▼Menu]
82:デフォルトの名無しさん
08/08/09 22:55:22
newでchar型の配列を1521090492個以上確保したらエラーがでるのですが何故でしょうか?
メモリは4G積んでるんでメモリが足りなくて確保できないってことではないと思うんですが
newで確保できるのは1521090492byteまでって決まってたりするんですか?

83:デフォルトの名無しさん
08/08/09 22:57:40
それはコンパイラを作った人に訊いてくれ。

84:デフォルトの名無しさん
08/08/09 23:09:26
どんなエラーよ?

他にもOSとかコンパイラとか色々あるじゃん。書くことが。


85:デフォルトの名無しさん
08/08/09 23:09:59
ごめんなさいコンパイルは通るけど、それを実行すると確保するところでエラーでる
mlock.cの
void __cdecl _unlock (int locknum){
    //leave the critical section.
    LeaveCriticalSection( _locktable[locknum].lock );
}

0x7d4f2366 でハンドルされていない例外が発生しました: Microsoft C++ の
例外: std::bad_alloc (メモリの場所 0x0012fe40)。
ってエラーがでます
これってコンパイラかデバッガの仕様なんですか?

ソースはこんなのでnewのところでエラー
int main(){
    char *p;
    p=new char [1521090493];
    delete [] p;
    return 0;
}

86:デフォルトの名無しさん
08/08/09 23:13:25
>>85
そもそもWindowsでは32ビットアプリで32ビット(2GiB)以上のメモリ空間をアクセスする単純な手段は提供されていません。
大人しく64ビットアプリを作るか、ありえないメモリ戦略を諦めることをお勧めします。

87:デフォルトの名無しさん
08/08/09 23:13:45
OSはXPx64でコンパイラはVisualStudio2008Proです
タスクマネージャでみるとメモリのコミットチャージは
newで確保前は470MB/3826MBで充分空いてます

88:デフォルトの名無しさん
08/08/09 23:13:49
std::bad_allocでググれば。

89:デフォルトの名無しさん
08/08/09 23:17:44
>>86
ありがとうございます。32ビットでも2Gまでならいけるはずですよね
とりあえずこんなに確保するつもりは無いんですが、色々試したら[1521090492]
を超えたところでエラーがでたので興味本位できいてみただけです。
>>88
ググったら色々情報でてきた。あとは自分で調べてみることにします

90:デフォルトの名無しさん
08/08/09 23:23:14
ゲームでアジャイルとかできるんかね。
ゲーム作ったことないけどテストパターンが割りと膨大になりそうにおもう。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4378日前に更新/83 KB
担当:undef