c++ - ifstream 读取二进制文件在发布模式下工作,但不在调试模式下
问题描述
我正在研究一个读取二进制文件的函数。我使用 Visual Studio C++,它在发布模式下完美运行,但在调试模式下却不行。我需要在调试中运行它来检测潜在的内存泄漏。
该函数只是使用 ifstream 读取二进制文件并存储值。在调试模式下,程序不读取任何内容。我试图在网上找到类似的问题,但一无所获(通常,程序在调试中工作而在发布时不起作用)。
string identifier;
identifier.resize(4);
ifstream adtFile(m_nameFile, ios::in | ios::binary);
adtFile.read((char*)&identifier, sizeof(::uint32_t));
该文件以 4 个字符开头,上面的最小代码在发布模式下完美读取并存储它,但在调试模式下却不行。我怀疑转换为 char* 是问题,但我不明白为什么。
如果有人有想法,我不知道这两种配置之间的所有区别。
非常感谢您的阅读。
解决方案
你可能想要
dtFile.read(identifier.data(), 4);
或等效地,&identifier[0]
推荐阅读
- django - 为模糊 FTS + Typeahead 查询 Django Postgres
- php - PHP - 尝试连接代理时出现 CURL 错误
- c# - C# 有时 1.0 不是 1?
- c - Shellcode 崩溃目标 PE
- embed - 获取一侧时,我可以将 Spring Data Rest/JPA 双向 OneToMany 的多侧嵌入为数组吗
- google-maps - 颤振批处理http请求
- local-storage - 如何在 Gatsby 的 LocalStorage 中使用添加和访问数据
- javascript - 通过从数组中给出的键过滤对象的值并在 jsx 中呈现它们
- kubernetes - 在 Istio Ingress 上使用letsencrypt 证书
- javascript - 为什么这个 Promise.all() 函数只返回最后解析的值?