这段代码错在哪里?执行到*lpdest=(unsigned char)0;就报错。
long i;
unsigned char * lpdest;
//lpdest= (unsigned char *)::malloc(g_height*g_width);
lpdest=new (unsigned char )(262144);
for(i=0;i<262144;i++,lpdest++)
*lpdest=(unsigned char)0;
delete  lpdest;

解决方案 »

  1.   

    lpdest = new (unsigned char )(262144);
    我认为是这句的问题,你意图是new一个数组,但是以上不是,只是分配了一个unsigned char的空间,还给了初始值262144(?)。这不是一个数组,所以下面的循环当然会出错,因为越界了。
    是不是应该这样写:
    lpdest = new (unsigned char )[262144];
      

  2.   

    lpdest=new (unsigned char )(262144);
    改为
    lpdest = new unsigned char[262144];
    理由titi_lima已经说过了!