容器或者数组可分配的最大空间问题
在使用STL的容器vector或者array的时候,如果作为一个局部变量,vector\array能分配的最大size是多少呢?
1.以常用的int,long进行说明(查看一下这两种类型在win32程序中分别占用几个字节)
1 cout << "\n sizeof(int):" << sizeof(int) << endl; //4 2 cout << "\n sizeof(long):" << sizeof(long) << endl; //4
2.使用IDE VS来进行测试:
note: 在VS的项目属性配置中有对于堆栈空间大小的默认分配[ 项目->链接器->系统->堆栈保留大小(默认大小:1M)]
粗略换算一下:1M = 1000Kb = 1000*1000 Bytes
精准一点:1M = 1024 * 1024 Bytes
也就是说以long(4 bytes)作为元素类型的话,也就是只能存放250000个元素左右,精确一点就是262144个元素,当然不可能达到此值,因为函数中还会有其他局部变量。
验证一下是否如此????
经测试,当元素个数是250000的时候,是可以正常分配空间的。当达到260000的时候,程序已经不能正常执行了。
1 int main() 2 { 3 cout << "\n sizeof(int):" << sizeof(int) << endl; 4 cout << "\n sizeof(long):" << sizeof(long) << endl; 5 array<long, ARR_SIZE>c; 6 return 0; 7 }
浙公网安备 33010602011771号