我的代码中有这两行:
TCHAR String[400] = {0};
SendMessageW(hwnd, WM_GETTEXT,sizeof(String), (LPARAM)String);
当我以这种方式使用它时,我有时会遇到运行时错误:“变量String周围的堆栈已损坏”
当我使用
时TCHAR String[400] = {0};
SendMessageW(hwnd, WM_GETTEXT,10, (LPARAM)String);
它没有问题。但我认为使用sizeof()的全部事情是确保没有溢出问题....为什么sizeof(String)不安全,我可以使用什么?
谢谢!祝你有愉快的一天!
答案 0 :(得分:5)
您正在使用wchar_t,sizeof(String)将为800,而不是400.修复:
wchar_t String[400] = 0;
SendMessageW(hwnd, WM_GETTEXT, sizeof(String) / sizeof(wchar_t), (LPARAM)String);