0xc0000005

场景:错误 0xC0000005

异常 0xC0000005
一个字符串逆序的函数,调试出现如下错误:

Tstrings.exe 中的 0x01241571 处有未经处理的异常: 0xC0000005: 写入位置 0x01247831 时发生访问冲突


static void Reverse3(char* s,int left,int right)
{
if (left>=right)
{
return;
}
char t=s[left];
s[left]=s[right];
s[right]=t;

Reverse3(s,left+1,right-1);
}


发生错误时运行至第8行

------解决方案--------------------
引用:
Quote: 引用:


s[left]=s[right];
//确认下看看你传进来的字符串长度,上面的写法是不是越界了呢?


int main()
{
char* str="zhangwei";
cout<<str<<endl;
CDo::Reverse3(str,1,4);
cout<<str<<endl;
return 0;
}

这是调用,确认没有越界


你传进来是常量字符串不能修改的!
int main()
{
    char str[]="zhangwei";// 改成这样!
    cout<<str<<endl;
    CDo::Reverse3(str,1,4);
    cout<<str<<endl;
    return 0;
}