首页 > 解决方案 > 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* 是问题,但我不明白为什么。

如果有人有想法,我不知道这两种配置之间的所有区别。

非常感谢您的阅读。

标签: c++visual-c++

解决方案


你可能想要

dtFile.read(identifier.data(), 4);

或等效地,&identifier[0]


推荐阅读