C++中,调用类的成员函数时出现错误

从文件中读取了一个类对象,但在调用成员函数时发生错误。出现提示:0x00000000处未处理的异常,0xC0000005读取位置0x00000000时发生访问冲突。这是怎么回事。
要补充的是只要把文件重写一遍,短时期内是不会出现错误的。但大概过了一小时后,又出现上述错误了,这是怎么回事啊?

微软WINDOWS系统的漏洞,windows把内存地址0X00000000到0X0000ffff指定为分配null指针的地址范围,如果程序试图访问这一地址,则认为是错误。c/c++编写的程序通常不进行严格的错误检查,当采用malloc来分配内存而可供分配的地址空间不够的情况下返回null指针。但是代码不检查这种错误,认为地址分配已经成功,于是就访问0X00000000的地址,于是就发生内存违规访问,同时该进程被终止。ASCII字符填充组成的pif文件时会出现以下情况:一个非法的pif文件(用ascii字符\''x\''填充)至少要369字节,系统才认为是一个合法的pif文件,才会以pif的图标[pifmgr.dll,0]显示,才会在属性里有程序、字体、内存、屏幕”等内容。而且仅仅当一个非pif文件的大小是369字节时察看属性的“程序”页时,不会发生程序错误,哪怕是370字节也不行。当对一个大于369字节的非法pif文件察看属性的“程序”页时,Explorer会出错,提示:\''***\''指令引用的\''***\''内存。该内存不能为\''read\'' ,问题出在pif文件的16进制地址:0x00000181[0x87]0x00000182[0x01]和 0x00000231[0xC3]0x00000232[0x02]即使是一个合法pif文件,只要改动这四处的任意一处,也会引起程序错误。而只要把0x00000181和0x00000182的值改为[0xFF][0xFF],那么其它地址任意更改都不会引起错误
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-14
可能是编译问题 编译前 清理一下

C++中,调用类的成员函数时出现错误
微软WINDOWS系统的漏洞,windows把内存地址0X00000000到0X0000ffff指定为分配null指针的地址范围,如果程序试图访问这一地址,则认为是错误。c\/c++编写的程序通常不进行严格的错误检查,当采用malloc来分配内存而可供分配的地址空间不够的情况下返回null指针。但是代码不检查这种错误,认为地址分配已经成功,于是就...

为什么在调用子函数时会失败?
这是由于封装的原则,私有成员函数只能由类的成员函数访问。所以,如果你试图在类的外部直接调用一个私有成员函数,编译器会报错。然而,如果一个函数被定义为保护(protected)或公共(public),那么它就可以在类的外部被访问。作用域规则:在C++中,作用域是变量、常量、函数和类型定义的可访问性的区域。

C++两个类之间的成员函数怎么相互调用,怎么老是报错。
1) 将需要调用的成员函数设为static 类型,如:在前述例子2中,将class Test2 成员函数Compare 定义前加上static 如下(黑体为改变之处):class Test2{\/\/….int static __cdecl Compare(const void* elem1, const void* elem2) \/\/成员函数。\/\/其他不变} 改变后的代码编译顺利通过。原因是,stati...

C++为什么调用这个dis()成员函数会报错?
这个函数在类中的定义是需要两个int类型的参数的,而你调用时没有传递任何参数,当然会报错。将类中这个函数的定义的参数去掉就行了。

C++使用类的成员函数的时候,出现"无法解析的外部符号"
a c();\/\/新建对象时加括号不放参数 相当于声明了一个类中的特殊函数c();\/\/由于这个函数没有定义 执行时找不到入口 即产生此错误\/\/默认构造函数声明对象时不需要加括号a c;\/\/调用a类中c函数c.c();

C++在一个类里调用另一个类的构造函数出错
你的代码,使用了c++11的新特性,确保你使用的编译器支持c++11标准。我在mac os x下,使用 clang,是可以编译通过的。注:微软的编译器,在Vistual Studio 2013 之前的C++编译器,都是不支持或不完全支持c++11标准的。

C++类成员函数计算数组元素的max和min返回了错误值
主要原因是你没有对 sales[QUARTERS]成员进行初始化。对你的程序作如下修改就好了:include<iostream> include <iomanip> using namespace std;class Sales { private:static const int QUARTERS=4;double sales[QUARTERS];public:double average;double max;double min;void set_maxandmin();void set_...

visual C++中error C2352是什么意思
这个错误是:非静态成员函数的非法调用 是不是你在调用类函数的时候,直接使用 类名::非静态函数名(参数) 这种方式,调用了类里面的非静态成员函数?静态函数是类的成员。非静态函数是对象的成员。静态函数只能操作静态成员和静态函数,按这个思路找找。

C++中出现error LNK2001,如何解决
test::test(void)__thiscall 是类成员函数调用约定 一般就是声明了但是没有该成员函数的定义。。。还有时是继承了抽象类。。。而没有定义纯虚函数 特殊的是用了分离MSAM设置错误(好像一般不是这样翻译,分离MSAM是我从MSDN中直译过来的)抽象基类要不不要写构造函数(会用默认构造函数),写了就要...

c++中类里的私有成员用函数数输不出来
(1)第一行,改为#include <iostream> (2)在#include下面添加using namespace std; (下面你有用到cout,但是没有指定命名空间)(3)也就是为什么数不出正确结果的重点了,注意你写的求平均数的代码(第19行),在里面,你重新声明了一个double aver变量,需要注意的是,这个是一个局部变量,而不...

相似回答