次のコード行を継承しました。
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 に置き換えられたかのようです。これは単語の境界と関係がありますか?
誰かが何が起こっているのか、それを修正する方法を説明できますか?