У меня возникла очень странная проблема ... Следующий тривиальный тестовый код работает, как и должно, если он внедряется в одно приложение Какао , но когда я использую его в одном из моих frameworks , я получаю совершенно неожиданные результаты ...
wchar_t Buf[2048];
wcscpy(Buf, L"/zbxbxklbvasyfiogkhgfdbxbx/bxkfiorjhsdfohdf/xbxasdoipppwejngfd/gjfdhjgfdfdjkg.sdfsdsrtlrt.ljlg/fghlfg");
int len1 = wcslen(L"/zbxbxklbvasyfiogkhgfdbxbx/bxkfiorjhsdfohdf/xbxasdoipppwejngfd/gjfdhjgfdfdjkg.sdfsdsrtlrt.ljlg/fghlfg");
int len2 = wcslen(Buf);
char Buf2[2048];
Buf2[0]=0;
wcstombs(Buf2, Buf, 2048);
// ??? Buf2 == ""
// ??? len1 == len2 == 57, but should be 101
Как это может быть, я сошел с ума?Даже если было повреждение памяти, он не мог повредить все эти значения, выделенные в стеке ... Почему даже wcslen (L "MyWideString") не работает?Изменение тестовой строки меняет ее длину, но это всегда неверно, wcstombs возвращает -1 ...
setlocale () нигде не используется, тестовая строка содержит только ASCII символов, для облегчения портирования я использую опцию компилятора -fshort-wchar , но она отлично работает в случае тестового приложения Какао ...
Пожалуйста, помогите!