Я пытаюсь получить простой фрагмент кода, который я нашел на веб-сайте для работы в VC++ 2010 в Windows Vista 64:
#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
DWORD dResult;
BOOL result;
char oldWallPaper[MAX_PATH];
result = SystemParametersInfo(SPI_GETDESKWALLPAPER, sizeof(oldWallPaper)-1, oldWallPaper, 0);
fprintf(stderr, "Current desktop background is %s\n", oldWallPaper);
return 0;
}
он компилируется, но когда я его запускаю, я всегда получаю эту ошибку:
Run-Time Check Failure #2 - Stack around the variable 'oldWallPaper' was corrupted.
Я не уверен, что происходит не так, но я заметил, что значение oldWallPaper выглядит примерно так: "C\0:\0\0U\0s\0e\0r\0s[...]" -- я интересно, откуда берутся все \0.
- Мой друг скомпилировал его на Windows XP 32 (также VC++ 2010) и смог без проблем запустить его.
какие-нибудь подсказки/подсказки/мнения?
Спасибо
sizeof
для массива, он не будет работать с массивом, который выmalloc
создали. - person bobobobo   schedule 03.12.2010