我目前正在编码一种搜索算法,以查找在视频元数据中找到的特定字节(字符)数组的所有情况。我试图将一个非常大的文件(大约2GB)的所有内容加载到一个数组中,但是由于文件的大小,我在运行程序时不断收到bad_alloc()异常。
我认为一种解决方案是创建一个缓冲区,以“整理”文件的内容,但是我不确定如何进行编码。
到目前为止,我的代码如下:
string file = "metadata.ts";
ifstream fl(file);
fl.seekg(0, ios::end);
size_t len = fl.tellg();
char *byteArray = new char[len];
fl.seekg(0, ios::beg);
fl.read(byteArray, len);
fl.close();
它适用于较小的视频文件,但是当我尝试使用略小于2GB的文件时,它会崩溃并出现bad_alloc()异常。
在此先感谢您的帮助-我愿意接受所有解决方案。
编辑: 我已经检查了Stack OverFlow上的其他解决方案,它们并不是我要找的。我正在尝试“整理”数据并使用缓冲区将其放入数组中,这是其他解决方案所没有的。