Использование _strlwr изнутри strcpy вызывает доступ доступа
Простой вызов _strlwr изнутри вызова strcpy вызывает нарушение прав доступа. Вот пример:
int _tmain(int argc, _TCHAR* argv[])
{
char dest[100];
strcpy(dest, _strlwr("TEST_STRING")); // Violation
return 0;
}
Однако нет нарушения, если строка уже в нижнем регистре:
int _tmain(int argc, _TCHAR* argv[])
{
char dest[100];
strcpy(dest, _strlwr("test_string")); // NO Violation
return 0;
}
Написал эквивалентный код, но он отлично работает:
void foo(const int *x) ;
int *fow(int *x);
int _tmain(int argc, _TCHAR* argv[])
{
int x=4;
foo(fow(&x));
}
void foo(const int *x) {
int LOCAL;
if (x != NULL) {
LOCAL = 3;
}
}
int * fow(int *x)
{
*x = 1;
return(x);
}