必威体育Betway必威体育官网
当前位置:首页 > IT技术

[c语言]0xC0000005访问冲突

时间:2019-08-31 23:10:00来源:IT技术作者:seo实验室小编阅读:85次「手机版」
 

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 时发生访问冲突的解

我是新手,其实对这个东西我自己也不是很清楚,当然更不可能将有的情况都列举出来,在这里我只是将自己见到的,可能的情况做一个汇总:上面

分享到:

栏目导航

推荐阅读

热门阅读