windows7/vs2008/32位程序/默认设置,最大可分配heap大小为:1024*1024*1024*2-1,即:2*(2^30)-1字节 = 2G-1字节 = 0x7fffffff。
#include <iostream>
void main()
{
std::cout << sizeof(double) << "\n";
std::cout << sizeof(int) << "\n";
std::cout << sizeof(float) << "\n";
std::cout << sizeof(bool) << "\n";
std::cout << sizeof(char) << "\n";
try {
double *a = new double[15000*15000];
} catch( std::bad_alloc &memExp ) {
std::cout << "错误\n";
system("pause");
};
system("pause");
}
上例中,new 分配的空间:15000*15000*sizeof(double) = 15000*15000*8,程序不能分配这么大的空间,输出“错误”。
如果a为int、char、float,则可以分配。