错误出现异常,提示写入位置0X00483ddb时发生访问冲突,怎么解决
异常出现错误,提示写入位置0X00483ddb时发生访问冲突,如何解决
上代码:
f1(....)
{
....
f2("QQGame.exe");
}
f2(char* ProcessName)
{
....
if(strcmp(strupr(szExeFile),strupr(ProcessName))==0)
{
...
}
}
出现错误,提示写入位置0X00345b位置时发生访问冲突,调试跟踪进入了系统文件strupr.c中的_strupr函数中:
extern "C" char * __cdecl _strupr (
char * string
)
{
if (__locale_changed == 0)
{
/* validation section */
_VALIDATE_RETURN(string != NULL, EINVAL, NULL);
char *cp; /* traverses string for C locale conversion */
for ( cp = string ; *cp ; ++cp )
if ( ('a' <= *cp) && (*cp <= 'z') )
*cp -= 'a' - 'A';
return(string);
}
else
{
_strupr_s_l(string, (size_t)(-1), NULL);
return (string);
}
}
------解决方案--------------------
f2("QQGame.exe");
相当于传了1个常量字符串进去,所以一改值就错了
------解决方案--------------------
2楼说的没错,这么改试试:
char* d;
*d="QQGame.exe";
f(d);
上代码:
f1(....)
{
....
f2("QQGame.exe");
}
f2(char* ProcessName)
{
....
if(strcmp(strupr(szExeFile),strupr(ProcessName))==0)
{
...
}
}
出现错误,提示写入位置0X00345b位置时发生访问冲突,调试跟踪进入了系统文件strupr.c中的_strupr函数中:
extern "C" char * __cdecl _strupr (
char * string
)
{
if (__locale_changed == 0)
{
/* validation section */
_VALIDATE_RETURN(string != NULL, EINVAL, NULL);
char *cp; /* traverses string for C locale conversion */
for ( cp = string ; *cp ; ++cp )
if ( ('a' <= *cp) && (*cp <= 'z') )
*cp -= 'a' - 'A';
return(string);
}
else
{
_strupr_s_l(string, (size_t)(-1), NULL);
return (string);
}
}
------解决方案--------------------
f2("QQGame.exe");
相当于传了1个常量字符串进去,所以一改值就错了
------解决方案--------------------
2楼说的没错,这么改试试:
char* d;
*d="QQGame.exe";
f(d);