Я унаследовал следующую строку кода:
TCHAR temp[300];
GetModuleFileName(NULL, temp, 300);
Однако, это терпит неудачу, так как первые 3 байта заполнены значениями мусора (всегда те же самые, хотя -128, -13, 23, в этом порядке). Я сказал, хорошо, и изменил его на:
TCHAR temp[300];
ZeroMemory(temp, 300);
GetModuleFileName(NULL, temp, 300);
но значения мусора сохранились! Обратите внимание, что после вызова ZeroMemory () все остальные байты были обнулены должным образом, а после GetModuleFileName () каталог был правильно сохранен в буфере. Это как если бы temp был заменен на temp + 3. Может ли это быть как-то связано с границами слов?
Может кто-нибудь объяснить, что происходит и как это исправить?