【发布时间】:2011-02-17 07:52:59
【问题描述】:
当我输入以下内容时。代码,我得到的输出为 1073741823。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector <int> v;
cout<<v.max_size();
return 0;
}
但是,当我尝试将向量的大小调整为 1,000,000,000 时,v.resize(1000000000); 程序停止执行。我怎样才能使程序能够分配所需的内存,而它似乎应该能够分配?
我在 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 ?
但内容保持不变。请解释。
谢谢。
【问题讨论】:
-
欢迎来到 Stack Overflow!这是两个不同的问题。一般来说,您应该单独询问他们。
-
这是两个截然不同的问题。你能把它们分成两个问题帖子吗?
-
谢谢。对不起,由于内存分配不起作用,我尝试做同样的事情,但是在一个文件中,并在那里得到了一组不同的错误。所以我把这些问题放在一起。下次我一定会单独问他们。
-
如果您想解决这两个问题,我建议您将“另一件事”移至新线程。