异常-c++初学者求助 Access violation reading location

问题描述

c++初学者求助 Access violation reading location
函数如下

 #include<iostream>#include<fstream>#include<iomanip>using namespace std; int main(){    int Month Day;    string Name Email Address;    while (cin >> Month >> Day >> Name >> Email >> Address)    {        Person p(Month DayNameEmailAddress) m;        int size = sizeof(Person);        string name = p.getName();        int month = p.getMonth() day = p.getDay();        fstream out1(""SortByName.dat"" ios::out | ios::in | ios::binary);//按姓名排序        out1.seekp(0 ios::end);        while (out1.tellp())        {            out1.seekp(-size ios::cur);            out1.read((char*)&m size);            if (m.getName() <= name)                break;            out1.seekp(out1.tellp() ios::beg);            out1.write((const char*)&m size);            out1.seekp(-2 * size ios::cur);        }        out1.write((const char*)&p size);        out1.close();        fstream out2(""SortByBirthDay.dat"" ios::out | ios::in | ios::binary);//按生日排序        out2.seekp(0 ios::end);        while (out2.tellp())        {            out2.seekp(-size ios::cur);            out2.read((char*)&m size);            if ((m.getMonth() < month) || (m.getMonth() == month&&m.getDay() <= day))                break;            out2.seekp(out2.tellp() ios::beg);            out2.write((const char*)&m size);            out2.seekp(-2 * size ios::cur);        }        out2.write((const char*)&p size);        out2.close();    }}

头文件Person.h

 //Person.h #ifndef PERSON_H#define PERSON_H#include<iostream>#include<string>using namespace std;class Person{public:    Person(int int string string string);    Person(){};    int getMonth() const;    int getDay() const;    string getName() const;    void setEmail(string);    void setTel(string);    string getDayOfWeek() const;    virtual void print() const;protected:    int month;    int day;    string m;    string dayOfWeek;    string name;    string email;    string tel;};#endif

Person.cpp在这

  #include""Person.h""Person::Person(int a int b string c string d string e){    month = a;    day = b;    name = c;    email = d;    tel = e;    dayOfWeek = getDayOfWeek();    string mm[12] = { ""January""February"" March"" April"" May""June""July""August""September"" October"" November"" December"" };    m = mm[month-1];}int Person::getMonth() const{    return month;}int Person::getDay() const{    return day;}string Person::getName() const{    return name;}void Person::setEmail(string a){    email = a;}void Person::setTel(string a){    email = a;}string Person::getDayOfWeek() const{    string week[7] = { ""Sunday""Monday""Tuesday""Wednesday""Thursday""Friday""Saturday"" };    int m=monthd=dayy=15;    if (m < 3)    {        m += 12; y--;    }    int ans =  y + y / 4 + 26 * (m + 1) / 10 + d - 36;    ans = (ans % 7 + 7) % 7;    return week[ans];}void Person::print() const{    cout << m << '/' << day << '/' << dayOfWeek << ""   "" << name        << ""   Tel:"" << tel << ""   Email:"" << email << endl;}

整个函数运行结束后报错
Unhandled exception at 0x5527DF58 (msvcp120d.dll) in AddressBook.exe: 0xC0000005: Access violation reading location 0x0043E4A4.

求大神指导,在下感激不尽

解决方案

0xC0000005错误 表示使用了未创建(未分配内存空间)的变量或对象。
你看看是不是有些量没有初始化或者分配空间就用了

解决方案二:
析构顺序有问题,好好理顺下,程序的生存周期

解决方案三:
是不是对象释放的时候出错了。

时间: 2024-12-28 03:11:50

异常-c++初学者求助 Access violation reading location的相关文章

fstream-c++初学者求助 Access violation reading location

问题描述 c++初学者求助 Access violation reading location 函数如下 #include<iostream> #include<fstream> #include<iomanip> using namespace std; int main() { int Month, Day; string Name, Email, Address; while (cin >> Month >> Day >> Na

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x......

Unhandled exception at 0x........ in XXXX.exe: 0xC0000005:Access violation reading location 0x...... 对于C++初学者或粗心者,很容易犯如下图所示错误: 那么该错误是由什么造成的呢? 答案无疑只有一个,即:读取了本该没有的值或者地址. 那么如何解决呢? 第一件事,检查下你传入的参数是否合法: 第二件事,若malloc了一块内存,必须记得free: 第三件事,你是否赋值了已经溢出的值或地址. 举例说

dump文件分析-access violation at location 0x000000000000

问题描述 access violation at location 0x000000000000 关机时,程序异常结束,内存不可读写. dump文件分析得到的调用堆栈如下: 根据上面的调用堆栈,好像是回调函数出现问题.请问如何准确定位到代码错误位置? 解决方案 你标框的地方不是已经告诉你了出错的代码文件,行数了,你打开对应的代码分析看看 解决方案二: Unhandled exception at 0x00000000 in CallDll.exe: 0xC0000005: Access viol

vs2010 opengl-0x0001af3a 处有未经处理的异常: 0xC0000005: Access violation

问题描述 0x0001af3a 处有未经处理的异常: 0xC0000005: Access violation opengl程序在自己的电脑vs2010上面运行出错,在别人电脑没问题,重新配置了n次glew都不行,每次都弹出:0x0001af3a 处有未经处理的异常: 0xC0000005: Access violation,并且自动打开gs_support.c跳到 cookie = systime.ft_struct.dwLowDateTime;! 解决方案 实在是没办法,试着重新安装了VS2

c++ 二叉树 access violation?链表不也是这样的吗?为什么以下代码会出错 求助

问题描述 c++ 二叉树 access violation?链表不也是这样的吗?为什么以下代码会出错 求助 #include using namespace std; class binary_tree_node { public: binary_tree_node(const int& init_data = int(),binary_tree_node*init_left=NULL,binary_tree_node* init_right=NULL) { data_field = init_

Application Access Violation or Hang After Applying SP4(从微软站点找来的,E文,看看对你的情况是...

access|application|微软|站点 Application Access Violation or Hang After Applying SP4 This article discusses a Beta release of a Microsoft product. The information in this article is provided as-is and is subject to change without notice. No formal produc

提示access violation at address解决办法

 解决方法: 右击"我的电脑".单击"属性". 在"系统属性"中单击"高级". 在"性能"中单击"设置". 在"性能选项"中单击"数据执行保护". 单击"添加".选择要运行的程序. OK.就这么简单. Access Violation(非法访问)错误的解决方法 Access Violation(非法访问),General Pro

运行程序提示access violation at address的解决方法

现在把解决方法公布出来: 右击"我的电脑".单击"属性". 在"系统属性"中单击"高级". 在"性能"中单击"设置". 在"性能选项"中单击"数据执行保护". 单击"添加".选择要运行的程序. OK.就这么简单. Access Violation(非法访问)错误的解决方法 Access Violation(非法访问),Gener

c++builder编写的可执行程序一运行就出现Access violation

问题描述 c++builder编写的可执行程序一运行就出现Access violation 编写的绘图程序,一运行就出现Access violation at address 00429A16 in module"Project1.exe",Read of address 000002F0这个错误,我查了map文件,好像错误是一个无模式对话窗口Form4的TsearchRec这块有问题,这个子函数的功能是刷新Form4里的列表,请各位大神帮我看一下,是这段程序有问题吗 void __f