又遇到访问内存越界错误

大概的情况类似这样

class  A
{
    DWORD dary[MAX_TYPE]; 
// MAX_TYPE 是已定义常数
public :
    A()
    {
        dary[TYPE1] 
=   1 ;    // TYPE1 在其他头文件定义, 关键是TYPE1 > MAX_TYPE, SO 越界了
        dary[TYPE2]  =   2 ;   // TYPE2 > MAX_TYPE
    }


class  B
{
    
int  b;
public :
    B()
    {
        b 
=   0 ;
    }
}

void  Init()
{
    A 
* pa;
    B 
* pb;

    pa 
=   new  A;  // 虽然构造函数中数组下标越界,但是运行时很“安静”,没有报错

    pb 
=   new  B;  // 运行时提示分配内存错误,刚开始不解,后来才发现是class A中访问内存越界,new B; 的时候用到了越界的内存,所以报错

}

猜你喜欢

转载自blog.csdn.net/baodi_z/article/details/2304383