vector<int> a;
for(int i=0;i<2^26;i++)
{
a.push_back(i);
}
最后代码崩溃,捕捉到异常为bad allocation,该怎么解决?
for(int i=0;i<2^26;i++)
{
a.push_back(i);
}
最后代码崩溃,捕捉到异常为bad allocation,该怎么解决?
解决方案
20
话说你为什么要push_back那么多数进去,你要达到什么目的?
20
用文件读写模拟内存读写。
参考_lseeki64函数。
参考_lseeki64函数。
10
2^26 :
C不是VB 也不是matlab 这个运算符,不是幂运算
而是异或运算
另外 < 优先级比 ^ 优先级高,所以
i<2^26 ==> (i<2)^26
0<2 ==1 ; 1^26 ==27
1<2==1;
2,3,4,<2 ==0
0^26 == 26
所以即使反绕回来,这个循环也一直进行
这个就是个无穷循环
内存没有这么多啊,。无论有多少内存,都不够消耗的
所以bad allocation
C不是VB 也不是matlab 这个运算符,不是幂运算
而是异或运算
另外 < 优先级比 ^ 优先级高,所以
i<2^26 ==> (i<2)^26
0<2 ==1 ; 1^26 ==27
1<2==1;
2,3,4,<2 ==0
0^26 == 26
所以即使反绕回来,这个循环也一直进行
这个就是个无穷循环
内存没有这么多啊,。无论有多少内存,都不够消耗的
所以bad allocation