我继承了以下代码行:
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 所取代。这可能与单词边界有关吗?
有人可以解释发生了什么以及如何解决它吗?