Advertisement

C++一次性加载文件数据到内存中

阅读量:

问题: 早期开发了一个用于目标检测的SDK,其中包含从bin文件加载模型以及从内存中加载模型的两个功能接口。后续在处理级联检测任务时,涉及多个bin模型文件的使用,当需要将这些独立的bin文件整合为一个统一文件时,发现原有的加载接口已无法满足需求,必须进行调整。

解决:
为避免对现有接口进行修改,采取了以下应对策略:

(1) 对多个bin文件实施拼接操作,并同步记录每个单独文件的数据容量。
最终生成的合并文件结构如下:模型总数+模型A容量+…+模型X容量+模型A参数内容…

(2) 通过特定方式将上述整合后的文件一次性读取至内存中

复制代码
    /**************** 将模型整个读入内存   ********************/
    std::ifstream infile(detModFile,std::ios::binary);
    if (!infile.is_open())  
    { 
        printf( "connot open the model file: %s\n",detModFile); 
        return -1; 
    } 
    std::filebuf *pbuf = infile.rdbuf(); 
    // 获取文件大小
    long 

全部评论 (0)

还没有任何评论哟~