当我输入以下内容时。代码,我得到的输出为 1073741823。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
cout<<v.max_size();
return 0;
}
但是,当我尝试通过 v.resize(1000000000);
将 vector 的大小调整为 1,000,000,000 时,程序停止执行。当程序似乎应该能够分配所需的内存时,我如何才能使它能够分配所需的内存?
我在 Windows 7 中使用 MinGW。我有 2 GB RAM。不应该吗? 万一不可能,我不能将其声明为整数数组并离开吗?但即使这样也行不通。
另一件事是,假设我会使用一个文件(可以轻松处理如此多的数据)。
我怎样才能让它同时读写呢。
使用 fstream file("file.txt', ios::out | ios::in );
首先不会创建文件。但是假设文件存在,我无法用于同时进行阅读和写作。
我的意思是:
让文件的内容为 111111
然后如果我运行:-
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
fstream file("file.txt",ios:in|ios::out);
char x;
while( file>>x)
{
file<<'0';
}
return 0;
}
文件的内容现在不应该是 101010
吗?读取一个字符然后用 0 覆盖下一个字符?或者,如果所有内容都被一次读入某个缓冲区,文件中是否应该至少有一个 0 ? 1111110
?
但内容保持不变。请解释。
谢谢。
最佳答案
32 位进程一次只能寻址 4GB 地址空间。通常,这 4GB 地址空间的大部分用于映射其他内容。您的 vector 将占用太多的连续地址空间(40 亿字节),这不太可能可用。
你应该memory map the file .参见
mmap
.
关于c++ - 为什么我不能在我的 vector 中保留 1,000,000,000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2797014/