Как изменить строку Юникода.
У меня есть функция
void ModifyString2 (WCHAR *szString) { // Declare a sample wide character string. int nLen = wcslen (szString); wcscat_s(szString, MAX_STRING_SIZE, L"-Modified" ); }
Я вызываю эту функцию из основной функции.
void main () { WCHAR szString [MAX_NAME_LENGTH] ; wcscpy_s(szString, MAX_NAME_LENGTH, L"This is Some String"); printf ("Before Call String Value=[%s]", szString); ModifyString2(szString); printf ("Before Call String Value=[%s]", szString); }
Когда я отлаживаю эту программу и выхожу из main, я получаю ошибку
Run-Time Check Failure #2 - Stack around the variable 'szString' was corrupted.
что я делаю не так ?
Что я уже пробовал:
вместо того чтобы выделять szString в стеке, я попробовал его с кучей,
любить
void main () { WCHAR * szString = new WCHAR [MAX_NAME_LENGTH] ; wcscpy_s(szString, MAX_NAME_LENGTH, L"This is Some String"); printf ("Before Call String Value=[%s]", szString); ModifyString2(szString); printf ("Before Call String Value=[%s]", szString); delete szString; return 0; }
This may be due to a corruption of the heap, which indicates a bug in MFCClient.exe or any of the DLLs it has loaded.
Не уверен, что я делаю неправильно, я использую Visual Studio 2010 ultimate на коробке windows.
пожалуйста помочь.
-Правин.