我一直在寻找有关这个问题的网络,这对我来说似乎很奇怪。 在我的节目我对下面的代码获取计算机的名称:GetComputerNameW在Windows 10中导致缓冲区溢出
TCHAR ComputerName[MAX_COMPUTERNAME_LENGTH + 1];
memset(ComputerName, 0, sizeof(ComputerName));
DWORD dwNameLenght = MAX_COMPUTERNAME_LENGTH;
GetComputerNameW(ComputerName, &dwNameLenght);
我与包含Unicode字符的计算机名(ÆÆØ
)测试,它工作正常(虽然GetLastError()
返回代码203)。 如果名称是DESKTOP-IVHSIQD
没有计算机名称,GetLastError()
返回111,这被称为缓冲区溢出。 操作系统是Windows 10 x64。
是否定义了UNICODE?而对于这个问题,如果你打算使用免除宏并直接使用'GetComputerNameW',为什么使用'TCHAR'而不是'wchar_t'? –