我应该给它腾出空间吗,像这样:
len = MAX_PATH * sizeof(_TCHAR) + sizeof(_TCHAR);
或者是:
len = MAX_PATH + sizeof(_TCHAR);
正确的大小来容纳包括 unicode 的路径?
MAX_PATH
(始终为 260)以字符而不是字节表示。
在分配以字节大小表示的原始内存时使用第一个,例如:
LPTSTR path = (LPTSTR) LocalAlloc(LMEM_FIXED, (MAX_PATH + 1) * sizeof(TCHAR));
在分配以字符表示的内存时使用第二个,例如:
TCHAR path[MAX_PATH + 1];
LPTSTR path = new TCHAR[MAX_PATH +1];
MAX_PATH
定义为 260,Windef.h
与 Unicode 无关。
如果您持有字节数,第一种方法很好。第二种方法没有任何意义。如果您持有多个字符,则应使用MAX_PATH+1
.
MAX_PATH 宏定义(260 字节)是采用的 ANSI 标准。不幸的是,这个标准早在 32 位操作系统出现之前就已经开发出来了。
目前,Unicode 版本的 (Windows) 文件库支持最多 32,767 字节的路径。但是,MAX_PATH 定义保持与(16 位)MS-DOS 相同