我有一个宏正在读取带有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():&gt;&gt;&gt;解释器编译错误: 无法分配区段内存!
答案 0 :(得分:3)
目前您正在读取数组,然后创建/分配它。那是倒退。
理想情况下,在阅读每一行时,最好先解析每一行。而不是存储所有五千兆字节。