0xc0000005读取位置0x000000时访问冲突
0xc0000005读取位置0x000000时访问冲突
很多用户在写代码的时候都会遇到0xc0000005读取位置0x000000时访问冲突这个错误,这个错误一般都是内存的写入错误,可以通过改变系统的栈保留空间来解决。
0xc0000005读取位置0x000000时访问冲突
1、点击“项目”选择“属性”
2、找到系统,更改堆栈保留大小,可以填一些大数值。
3、之后就可以正常运行了。
解决方法还是比较简单的,只需要更改一下具体的数值就可以了。
延伸阅读:win7蓝屏0xc0000005解决方案
c++错误0x... 处(位于... .exe 中)引发的异常: 0xC0000005: 读取位置 0x...时发生访问冲突?
例:
int a[3] = { 1, 2, 3 };
int *p = a;
则p、p+1、p+2分别指向数组a的3个元素。不需要自己推算实际占用大小,这是编译器的事情
ifstream inFile;
ofstream outFile;
outFile.open("c:.txt",ios::out);
char univ[] = "Tsinghua",name[10];
int course = 111,number;
outFile<<univ<<endl;
outFile<<course<<endl;
inFile.open("c:.txt",ios::in/*|ios::nocreate*/);
if(!inFile){
cout<<"不能打开b.txt"<<endl;
char c;
inFile>>name>>c>>number;
outFile<<"name:"<<name<<endl;
outFile<<"number:"<<number<<endl;?
?
右值引用与转移语义
在旧标准C++语言中,临时量(术语为右值,因其出现在赋值表达式的右边)可以做参数传给函数,但只能被接受为const &类型。这样函数便无法区分传给const &的是真正的右值还是普通const变量。而且,由于类型为const &,函数也无法改变所传对象的值。
C++0x将增加一种名为右值引用的新的引用类型,记作typename &&。这种类型可以被接受为非const值,从而允许改变其值。这种改变将允许某些对象创建转移语义。
以上内容参考:百度百科-c++0x
一个C++问题,调试时总出现:0xC0000005: 读取位置 0x00000000 时发生访问冲突”,不懂哪里错了 求解!
#include<iostream>
#include<string.h>
using namespace std;
class Student
{
public:
Student(char *pname,char s,int a);
void set(char *newname,char newsex,int newage);
void display();
int getage();
~Student();
private:
char* name;
char sex;
int age;
};
Student::Student(char *pname=NULL,char s='m',int a=0)
{
name=new char[strlen(pname)+1];
//strcpy(name,pname);
//* name = * pname;
sex=s;
age=a;
}
Student::~Student()
{
delete []name;
}
void Student::set(char *newname,char newsex,int newage)
{
delete []name;
name=new char[strlen(newname)+1];
if(name!=0)
//strcpy(name,newname);
//* name = * newname;
sex=newsex;
age=newage;
}
void Student::display()
{
cout<<"姓名:"<<name<<endl;
cout<<"性别(m:男,f:女):"<<sex<<endl;
cout<<"年龄:"<<age<<endl;
}
int Student::getage()
{
return age;
}
void sort( Student s[],int n)
{
Student temp;
for(int i=1;i<n;i++)
{
for(int j=0;j<n-i;j++)
{
if(s[j].getage()<s[j+1].getage())
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
}
}
}
void main()
{
Student stu[10];
stu[0].set("zhao",'f',18);
stu[1].set("qian",'f',17);
stu[2].set("sun",'m',20);
stu[3].set("li",'m',19);
stu[4].set("zhou",'f',16);
sort(stu,6);
for(int a=0;a<6;a++)
stu[a].display();
}
我只能改到这一步了,你自己再好好看看Pname的指针吧,就是他的错,但我改不出来了。
改出来了吗?若是改出来了,可以告诉我怎么改的吗?谢谢了。
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!