本帖最后由 dkbrain 于 2009-12-10 10:13:22 编辑

解决方案 »

  1.   

    memset之后立即delete[]
    看看会不会报错,要是不会报错,那就是使用的时候越界了
      

  2.   

    这个有一个结构体边界对齐的问题, 加一行int nSize=sizeof(mPixelAnalyse),看看结构体长度是多少?
    编译器默认的是8个字节的,所以sizeof(mPixelAnalyse)会是16个字节,而new mPixelAnalyse分配出来的是11个字节,自然在memset的时候也就是越界操作了
    1可以把结构体凑成16字节,
    2可以项目中设置结构体对齐为1字节,或在头文件中加入#pragma pack(1)宏
    3使用用malloc GlobalAlloc之类内存分配方式的操作
      

  3.   

    涉及到内存分配方式的问题,使用malloc试试,应该就没事了~~~
      

  4.   

    density是720;
    我估计应该是数组使用的时候越界了,正在检查程序中,估计应该不是memset()函数有问题。
      

  5.   

    你看下pPAResult[0]-pPAResult[n]每个结构体之间是否是连续的,如果不是连续的,可能就有问题了
      

  6.   

    你把delete[]pPAResult;  改成for里面一个个delete看看?
      

  7.   

    问题解决了
    pPixelAnalyse pPAResult;
    pPAResult = new mPixelAnalyse[1000];
    memset(pPAResult,0,sizeof(mPixelAnalyse) * 1000);
    delete[]pPAResult; 
    这样就没有问题了。
    我的程序之所以出错,是因为在程序中数组访问越界了。