我的程序编译的时候没有错误,运行时会出现“0x0089eb7”指令引用的"0x44543de8"内 
存。该内存不能为“written”。点击“确定”后,又出现“0x5f422950”指令引用的“0 
x4072c004”内存。该内存不能为“read”。再点击“确定”后,有时候会出现“应用程序 
发生异常Unknown software exception(0x80000003),位置为0x7fa144b”.虽然会出现错 
误提示,结果还是可以出来。这是怎么回事? 
我找了两天都没有找到错误,马上要交给老板。 
哪为大侠碰到过,多谢提醒!

解决方案 »

  1.   

    在你新new一个对象的时候要初始化指针
      

  2.   

    我的程序代码如下:
    for(Layer=0;Layer<Laymax;Laymax++)
    {
    double *VPX=new double[];
    double *VPY=new double[];
    double *VPZ=new double[];
    for(int i=0;i<NO;i++)
    {
    VPX[i]=VP[Layer][i].x;
    VPY[i]=VP[Layer][i].y;
    VPZ[i]=VP[Layer][i].z;
    VPZT=VPZT+VPZ[i];
    }
    ZAVERAGE=VPZT/NO; 
    mwArray X(1,NO,VPX);//调用matlab数学函数库,没有问题
    mwArray Y(1,NO,VPY);
    mwArray Z(1,NO,VPZ);
    ...........//其他程序代码,没有用到这三个被释放的变量
    delete[] VPX;//调试时运行到这里就会出现unhandled exception in ...exe:Access   Violation的错误
    delete[] VPY;
    delete[] VPZ;
    直接运行就会出现我上面提到的问题!
    请看看我的指针初始化是不是有问题!
    谢了
      

  3.   

    double *VPX=new double[];
    double *VPY=new double[];
    double *VPZ=new double[];
    这样的申请,指针空间是不可用的,使用VPX、VPY、VPZ中任何一个指针都会产生越界访问。
    申请时必须指定大小。
      

  4.   

    谢谢大家了,加分!尤其是houwenqiang大侠,只是我不明白为什么一定要指定大小,是规定吗?希望能得到解答!谢谢了!