当向量的大小太大时,如何解决C ++中内存不足的问题?

问题描述 投票:0回答:1

测试两个向量是否相同

请参见下面的代码

#include <iostream>
#include <vector>
#include <string>
int main(void) {
    std::vector<std::string> vstr1(131, "asdf");
    std::vector<std::string> vstr2(33131, "asdf");

    std::cout << (vstr1 == vstr2) << std::endl;;
    std::cout << "******************************" << std::endl;

    return 0;
}

效果很好。

现在我将vstr2的大小更改为非常大的[[large,例如33333333333131

#include <iostream> #include <vector> #include <string> int main(void) { std::vector<std::string> vstr1(131, "asdf"); std::vector<std::string> vstr2(33333333333131, "asdf"); std::cout << (vstr1 == vstr2) << std::endl;; std::cout << "******************************" << std::endl; return 0; }
不起作用,并且错误消息是

terminate called after throwing an instance of 'std::bad_alloc' what() std::bad_alloc Aborted (core dumped) a.out

我已经收集到由于内存分配失败而导致的错误。

我该如何处理非常大的向量?

c++ memory vector large-data allocation
1个回答
0
投票
您在这里有两个问题:
© www.soinside.com 2019 - 2024. All rights reserved.