容器或者数组可分配的最大空间问题

在使用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 }

 

posted @ 2022-04-03 13:56  Even_90  阅读(67)  评论(0)    收藏  举报