在自定义类中定义一个私有成员变量,然后让该类的成员函数调用此私有成员变量,就会弹出图中的错误提示信息,问题出在哪里呢?
是BCB6.0编译器的问题还是自定义类时候出错?
原因查明:在Unit1中我定义了一个MyGraphics *mygraphics 指针对象,Unit1的构造函数中没有给这个 mygraphics 指针对象分配内存,系统默认分配的内存只有四个字节,故早正内存分陪不足的错误如图3所示,修改方法在Unit1的构造函数中为mygraphics 指针对象分配内存,代码如下:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
//DoubleBuffered = true;
// 初始化GDI+
GdiplusStartup(&m_gdiplusToken, &m_gdiplusStartupInput, NULL);
mygraphics=new MyGraphics;
m_btest=true;
}
另外保证系统内存不浪费,请在使用完指针后将其内存释放,代码如下:
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1()
{
// 闭关GDI+
GdiplusShutdown(m_gdiplusToken);
delete mygraphics;
mygraphics=NULL;
}
其中mygraphics=NULL是为了防止mygraphics成为野指针,故将其制空。
如果我们在定义类的对象时候直接定义成普通对象而非指针对象,这样在使用类对象的时候就不会出现上述错误。