• 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程序的时候,调用调试命令找到的。

  • 相关阅读:
    标签,css,排版
    浏览器的内核
    焦点事件
    cookie
    浏览器的行为
    百叶窗分析
    水仙花数
    递归函数
    拖拽的问题解决
    正则的具体
  • 原文地址:https://www.cnblogs.com/liuzhaoyzz/p/11410283.html
Copyright © 2020-2023  润新知