terminate called after throwing an instance of 'std::length_error' what(): basic_string

产生情景:

循环读取文件的时候,每次读到一定大小,程序中断,报错:terminate called after throwing an instance of 'std::length_error'   what():  basic_string::_M_create

错误代码:

/*如果文件过大,当文件指针偏移位置大于系统默认文件指针的最大位置,会导致内存错误。64位一般都是大于2G之后出问题,我的环境为银河麒麟,大约300M的时候出现此错误。*/
srcfile.seekg(m_handleFilePara+m_opticalFiberLen, std::ios::cur); //跳过文件控制字和光纤头

替代代码:

char* jumpData = new char[m_handleFilePara+m_opticalFiberLen]; //需要跳过的FPGA文件操作信息和光纤头
while(!jumpData){
    jumpData = new char[m_handleFilePara+m_opticalFiberLen];
}
srcfile.read(jumpData, m_handleFilePara+m_opticalFiberLen); //跳过文件控制字和光纤头

 

上一篇:Python 最近两条好消息:①TIOBE排名超过C和Java②新版本发布3.10.0,还有今天刚发布的《What’s New in Python(2021.10.15)》


下一篇:JavaScript基础3