Следующий код не генерирует исключение и печатает "успех". Почему?
#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 ГБ
И если это так, как это должно было работать, как я могу проверить, что у меня достаточно памяти?
[ Изменить: сделал мой глупый код немного более правильным, теперь он по крайней мере потерпит неудачу на x64, если я удалю два *1024
]