当向量存储在 RAM 中时,变量究竟存储在哪里?

Where exactly are variables stored while vectors store in RAM?

我使用了这个并编译了它:

#include <iostream>
#include <string>
#include <vector>

int main() {

    std::vector<std::string> articles (119999999,"ads");
    std::cout <<   articles[1];
    getchar();
    return 0;
}

然后出现内存错误,内存已满(因为没有发生信息丢失)。我打开任务管理器,然后再次打开程序。该程序消耗了 250 兆字节,然后我的电脑突然关机。我问自己为什么当我声明很多变量和数组时,没有内存错误。

以至于我写了一个程序来创建一个文本文件,然后写了数千个变量,然后我翻译了那个文件,程序就正常打开了!

变量存储在哪里?向量只存储在 RAM 中吗?

sizeof(std::string) 通常是 32 个字节。即使使用短字符串优化,内存请求也是 119999999 * 32 字节的连续块。那是 4Gb 的数量级,超出了您计算机的容量。

如果您需要存储重复的字符串,请考虑 std::reference_wrapper 作为矢量元素类型。