C++ 分配 struc 的内存数组

c++ allocate memory array of struc

本文关键字:内存 数组 struc 分配 C++      更新时间:2023-10-16

我有一个宏正在读取带有348804849行的txt文件。我创建了一个结构来存储文件的每一列中包含的信息以及我添加的更多变量。我遇到的问题是我的计算机内存不足以存储所有这些信息。所以,我试图分配内存,但在运行代码时出现错误。这些是代码的相关部分。我简化了名字

在。C

ifstream myfile ("file.txt");
    char str[LINE_BUFFER];
if (myfile.is_open()){
    cout << "Theoretical file has been opened succesfully" << endl;
    while (myfile && myfile.getline(str, LINE_BUFFER)){
        myfile >> info[i].thing1 >> info[i].thing2;     
        i++;
        }
    lines_number = i-1;
        myfile.close();
}else cout << "Unable to open file";
info = malloc(lines_number * sizeof *info);

并在 .h 中

struct info_t{  
    double thing1;
    double thing2;
};
info_t *info;

错误:

在抛出"std::runtime_error"实例后终止调用 what():>>> 解释器编译错误:无法分配节内存!

目前您正在读取数组,然后创建/分配它。这是倒退。

理想情况下,您最好在阅读时解析每一行。而不是存储所有五千兆字节。