0xc0000005
无意间写出这样的代码:
这是一段将字符串逆转的代码;
#include<stdio.h>
#include<string.h>
void reserve(char *str,int len)
{
char *left = str;
char *right = str + len - 1;
char temp;
while(left < right)
{
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char *str = "abcd";
reserve(str,strlen(str));
printf("反转后为%s",str);
return 0;
}
这段程序看似没有任何问题,逻辑都对。但是一调试就会出现这样的异常:
我左思右想找不出原因,最后发现,
问题出在char *str = “abcd”;身上,这样定义一个字符串变量str,str指针是保存在堆区,但是"abcd"是一个常量,是保存在常量区的,常量是不能被改变的。在函数中,*left = *right;这句话是要改变常量的值,所以当然会报异常。
修改方法:将常量"abcd"定义到栈区或者全局变量就不会出现上述问题了。
char[10] = “abcd”;
相关阅读
【Java】Java程序报错:EXCEPTION_ACCESS_VIOLATION (0x
运行Java程序的时候,报错:EXCEPTION_ACCESS_VIOLATION (0xc0000005); 根据原网页的说明: EXCEPTION_ACCESS_VIOLATION In rare c
0xC0000005: 写入位置 0x00000000 时发生访问冲突的解
我是新手,其实对这个东西我自己也不是很清楚,当然更不可能将有的情况都列举出来,在这里我只是将自己见到的,可能的情况做一个汇总:上面