次のコードは例外をスローせず、「成功」を出力します。なんで ?
#include <iostream>
int main()
{
size_t size = size_t(1024)*1024*1024*1024*1024*1024*1024*1024;
char* data = new char[size];
if (data == NULL)
std::cout << "fail" << std::endl;
else
std::cout << "success" << std::endl;
return 0;
}
- コンパイラ: g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
- OS: Ubuntu 12.04
- RAM: 8GB
そして、これが本来の動作方法である場合、十分なメモリがあることを確認するにはどうすればよいですか?
[編集:愚かなコードをもう少し正確にしました。2 つ削除すると、少なくとも x64 で失敗するようになりました*1024
]