2

std::bad_alloc一貫してスローしているプログラムがあります。プラットフォームは Windows 8 x64 で、最適化なしで ICC でコンパイルされています。

「空き」メモリの量が 0 になると例外がスローされることに気付きましたが、「スタンバイ」メモリはまだ約 4Gb 残っています。私が知っていることとこの回答に基づいて、空きメモリが枯渇すると、スタンバイメモリが使用されると考えていました。これは発生していないようです。

この問題は、単一の大きな割り当てが原因ではないようです。例外は深い再帰中に一貫してスローされるため、問題の割り当てはすでに何度も行われています。スロー中のスタックは次のようになります。

    KernelBase.dll!_RaiseException@16()    Unknown
    msvcr110d.dll!_CxxThrowException(void * pExceptionObject, const _s__ThrowInfo * pThrowInfo) Line 152    C++
    msvcr110d.dll!operator new(unsigned int size) Line 63   C++
    Project2.exe!list_make(int elt, void * list) Line 85    C++
    Project2.exe!`anonymous-namespace'::ReverseHelper(void * list, void * reverse) Line 225 C++
    Project2.exe!`anonymous-namespace'::ReverseHelper(void * list, void * reverse) Line 227 C++
    Project2.exe!`anonymous-namespace'::ReverseHelper(void * list, void * reverse) Line 227 C++

に渡されるサイズoperator newは だけ12です。この動作を引き起こしている可能性のあるアイデアはありますか?

4

0 に答える 0