以下代码不会引发异常并打印“成功”。为什么 ?
#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
- 操作系统:Ubuntu 12.04
- 内存:8 GB
如果这是它的工作方式,我如何检查我是否有足够的内存?
[编辑:使我的愚蠢代码更正确,现在如果我删除两个,它至少会在 x64 上失败*1024
]