2011-09-03 63 views
-1

我的代码:WINAPI unicode的问题

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是PROCESSS ID。但它会返回奇怪的东西。就像unicode符号,然后是路径的一部分。我做错了什么?

+0

对我感到羞耻。抱歉。 :) – blez

回答

2

您在致电MessageBox()之前释放内存。

在任何情况下,不需要使用HeapAlloc(),只需使用malloc()即可。实际上,由于GetTempFileName()的最大缓冲区大小为MAX_PATH,因此使用堆栈分配缓冲区执行此操作最容易。