如何解决读取字符串 -vs2019 的字符时出错
我正在尝试使用我在 Windows 上用 C++ 构建的自定义插件反序列化 tensorrt 引擎,我正在读取这样的二进制(引擎)文件
char *gieModelStream{nullptr};
size_t size{0};
std::ifstream file(filename,std::ios::binary);
if (file.good()) {
file.seekg(0,file.end);
size = file.tellg();
file.seekg(0,file.beg);
gieModelStream = new char[size];
file.read(gieModelStream,size);
file.close();
}
然后像这样反序列化
pluginFactory = new PluginFactory();
runtimeRT = createInferRuntime(loggerRT);
engineRT = runtimeRT->deserializeCudaEngine(gieModelStream,size,(IPluginFactory *) pluginFactory);
然后它传递给一个函数来创建插件
IPlugin* PluginFactory::createPlugin(const char* layerName,const void* serialData,size_t serialLength) {
const char * buf = reinterpret_cast<const char*>(serialData);
.
.
.
}
当我尝试加载特定图层时发生错误
r->w = readBUF<int>(buf);
for(int i=0; i<r->n_masks; i++)
r->mask[i] = readBUF<dnnType>(buf);//error occurs in this line
for(int i=0; i<r->n_masks*2*r->num; i++)
r->bias[i] = readBUF<dnnType>(buf);
当我调试它时,错误语句读取“错误读取字符串的字符 - 无法读取内存”并指向 buf 并且每次调试时发生此错误的 i 值都会更改。我对这里发生的事情感到困惑,因为相同的代码在 linux 上运行得非常好。如果有人能解释为什么只在 Windows(MSVC 工具链)中发生这种情况以及任何解决方法,那就太棒了?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。