又遇到访问内存越界错误

来源:互联网 发布:腾讯电脑管家mac版本 编辑:程序博客网 时间:2024/05/21 17:47

大概的情况类似这样

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; 的时候用到了越界的内存,所以报错

}