运算符后"core dumped"错误 reinterpret_cast<const uint8_t*>

Error "core dumped" after operator reinterpret_cast<const uint8_t*>

本文关键字:const gt lt uint8 cast core dumped 错误 reinterpret 运算符      更新时间:2023-10-16

我有以下问题:

我创建了Java项目,它通过JNI使用C++动态库。它读取图像并分析其特征。 当我运行C++使用相同的库的项目时 - 一切都很好,进程终止没有错误,但 Java 项目在不同的图像上终止,并显示错误"崩溃发生在本机代码中的 Java 虚拟机外部。...核心倾倒"。

导致错误的代码段如下:

vector<char> getFileContent(const string &fileName)
{
    ifstream file(fileName.c_str());
    vector<char> buf;
    copy( std::istreambuf_iterator<char>(file), std::istreambuf_iterator<char>(),std::back_inserter(buf) );
    return buf;
} 
int analyzeFiles(vector<File> files)
{
    //check for extension ". jpg"
    for(size_t i = 0; i < files.size(); i++)
    {   
        vector<char> fileContent = getFileContent(files[i].directory + '/' + files[i].fileName);
        DrawingDetector dd(reinterpret_cast<const uint8_t*>(&fileContent[0]), fileContent.size()); //causes error in a runtime, terminates on any image
        //the rest code
    }
}   

有人有什么想法吗?如能就我的问题提出任何建议,我将不胜感激。

您应该处理向量为空的情况(此时&fileContent[0]可能无效。

快速检查是查看文件是否真的被打开。