【问题标题】:WinApi unicode problemWinApi unicode 问题
【发布时间】:2011-11-09 19:43:16
【问题描述】:

我有代码:

wchar_t* temp = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 1000 * sizeof(wchar_t));
wchar_t* temp2 = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, 1000 * sizeof(wchar_t));

GetTempPathW(1000, temp);

GetTempFileNameW(temp, L"vdr", GetCurrentProcessId(), temp2);

HeapFree(GetProcessHeap(), 0, temp2);

MessageBoxW(0,temp2,0,0);

它应该创建一个文件“vdrXXXX.tmp”,其中 XXXX 作为进程 ID。但它返回奇怪的东西。像 unicode 符号,然后是路径的一部分。我做错了什么?

【问题讨论】:

    标签: c winapi unicode


    【解决方案1】:

    你在调用MessageBox()之前释放内存。

    在任何情况下,都不需要使用HeapAlloc(),只需使用malloc()。事实上,由于GetTempFileName() 的最大缓冲区大小为MAX_PATH,因此使用堆栈分配的缓冲区最容易做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多