创建一百万个对象,每个对象有12个double

Creating a million objects with 12 doubles each

本文关键字:对象 12个 double 一百万 百万个 创建      更新时间:2023-10-16

我是一个中级程序员。我正在尝试创建一个模拟程序,需要创建一个类的一百万个对象。每个对象将包含7个12x12矩阵。(我知道这是很大的内存)。我试着用二维向量。但是当我运行时,它总是被操作系统(Ubuntu)杀死。我尝试使用"new"和2D双数组(因为我读到new将把内存放在堆上)。但是进程总是被终止。

我分配数组和对象的向量如下

12 x12矩阵

    ObjectMatrix = new double*[matSize];
    for(int i = 0; i < matSize; ++i) {
            ObjectMatrix[i] = new double[matSize];
    }

一个包含一百万个对象的向量,每个对象包含7个这样的12x12矩阵

    for(int i=0;i<=1E6;i++){
       ObjectVector *newObj = new Object();
       ObjectVector.push_back(newObj);
    }

是否有办法解决这个问题,并创建一个向量1或更多的百万对象?

您应该在一块内存中创建您的矩阵。

double* matrix = new double[matSize*matSize];

这样就节省了matSize*sizeof(double*)的内存。

你应该创建你的对象作为一个数组。

Object* objects = new Object[number];

这里可以再次保存很多不必要的指针