一修改m_Empnum的值就程序崩怎么回事


void add_emp()
        {
            cout << "请输入添加职工数量:";
            int addnum=0;
            cin >> addnum;
            if(addnum>0)
            {
                int newsize=this->m_Empnum+addnum;
                worker ** newspace=new worker*[newsize];
                if(this->m_Emparray!=NULL)
                {
                    for(int i = 0;i < m_Empnum;i++) 
                    {
                        newspace[i]=this->m_Emparray[i];
                    }
                }
                for(int i = 0;i "请输入第"<< i+1<<"个职工编号:";
                    cin >> id;
                    cout << "请输入第"<< i+1<<"个职工姓名:";
                    cin >> name;
                    cout<<"请输入第"<1<<"个职工岗位"<"1.普通职工"<< endl;
                    cout << "2.经理"<< endl;
                    cout << "3.老板"<< endl;
                    cin >> Deptid;
                    
                   worker * wr=NULL;
                    switch(Deptid)
                    {
                        case 1:
                       wr=new Employaa(id,name,1);
                        break;
                        case 2:
                        wr=new manager(id,name,2);
                        break;
                        case 3:
                        wr=new Boss(id,name,3);
                        break;
                    }
                    newspace[this->m_Empnum+i]=wr;
                    //cout << m_Emparray<< endl;
                   delete[] this->m_Emparray;
                    
                   m_Emparray=newspace;
                   cout<// cout<
                   this->m_Empnum=newsize;
                    //worker *w=NULL;
                  //w=new  Boss(1,"张三",1);
                  cout << "成功添加"<< addnum<<"名员工"<

假设m_Empnum=1,addnum=2;newspace的元素个数为newsize就等于二者之和3
18行i = 0时,添加第一个人。运行到53行,m_Empnum=newsize=3。
继续下一次for循环,此时i=2,运行到46行时,newspace[m_Empnum+i]也就是取[3+2]=[5] 这不越界崩溃吗?

修改参数值,程序崩溃,不用怀疑,百分百数组溢出了