zoukankan      html  css  js  c++  java
  • c++的CreateFile导致内存不能为written错误

    LPCWSTR szFileName;
    szFileName=argv[2];
    //LPCWSTR szFileName=L"test.txt";//文件名字可以根据自己的需要修改,或者用变量输入
    HANDLE hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    // 共享方式打开,避免其他地方需要读写此文件
    if (INVALID_HANDLE_VALUE != hFile)
    {
    DWORD dwFileSize = GetFileSize(hFile, NULL);
    PBYTE pBuffer = (PBYTE)malloc(dwFileSize + 2);
    int iLen = 0;
    if (!ReadFile(hFile, pBuffer, dwFileSize, &dwFileSize, NULL))
    {
    free(pBuffer);
    return FALSE;
    }
    //CloseHandle(hFile);
    pBuffer[dwFileSize] = '';
    pBuffer[dwFileSize + 1] = '';
    //std::wstring srcEncode;
    srcEncode = DetectEncode(pBuffer, dwFileSize);
    CloseHandle(hFile);
    free(pBuffer);

    HANDLE hFile = CreateFile(szFileName, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
    OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

    这一句,文件读写方式 要选择FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE模式,否则多次打开关闭就有可能导致内存不能为written错误,这个错误是通过运行exe程序的时候,调用调试命令找到的。

  • 相关阅读:
    vue2.0是不支持通过下标来更改数组的,无法做到响应式
    C# 深拷贝 Bitmap对象示例
    vscode终端中文乱码
    TkbmMemTable使用总结
    openssl 证书概念介绍
    openssl源码介绍
    python变量赋值特性
    openssl安装
    github开源协议选择
    NLP 多分类神经网络
  • 原文地址:https://www.cnblogs.com/liuzhaoyzz/p/11410283.html
Copyright © 2011-2022 走看看