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
です。この動作を引き起こしている可能性のあるアイデアはありますか?