Использование _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);
}

0 ответов

Другие вопросы по тегам