我有一个程序通过从两个单独的.csv文件中获取数据来生成.csv文件。
我使用vector<string>
来保存每个csv文件中的数据,然后我的程序根据特定条件进行数据排序,从而生成输出。我担心我的程序可能会耗尽内存。
vector<string>
一次可以容纳多少数据?它是系统/处理器/操作系统特定的吗?
答案 0 :(得分:1)
您可以使用非常大的vector<T>::max_size()
进行检查,here您可以在运行此示例的系统上阅读其1073741823。但是我想你对真实世界的场景更感兴趣 - 在你的进程堆上没有可用的连续内存块时,你会得到bad_alloc异常。一种解决方案可能是使用std::deque - 它将以块的形式进行分配。
答案 1 :(得分:0)
是的,它是系统/处理器/操作系统特定的。
对于32位程序,可能限制为2GB(如果您有任何其他数据,则会更少)。 64位程序可能会受到可用交换空间的限制(因此几GB)。
嵌入式系统将提供更少(可能非常少)。
但是几十或几百MB应该没有问题。