清帮我看看 下面的代码关于内存的存取对否!!!
HDIB hDIB;
 LPSTR m_lpDib,
 int i,j,m_lWidth,m_lHeight;
 m_lWidth=1000;
 m_lHeight=600;

hDIB = (HDIB) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,*sizeof(int));
 if (hDIB == 0 )
  {
     MessageBox("分配内存失败", "系统提示" , MB_ICONINFORMATION | MB_OK);
return NULL ;
  }
  m_lpDib = (LPSTR) ::GlobalLock((HGLOBAL) hDIB);
  
   for (j=0;j<m_lHeight;j++)
      for (i=0;i<m_lWidth;i++)
{
                *m_lpDib=i+j;
                 m_lpDib+=sizeof(int);(这样用对否,若不正确 该如何应用)
                                   
 }
    ::GlobalUnlock((HGLOBAL) hDIB);
    return hDIB;

解决方案 »

  1.   

    *m_lpDib=i+j;
        m_lpDib+=sizeof(int);(这样用对否,若不正确 该如何应用)绝对错误,编译不过吧。
    定义的LPSTR m_lpDib,所以m_lpDib指向的是char*,第一句用整型为字符型赋值,错。
    指针的增量,是根据指针所指的数据类型的大小决定的,对于char*型指针,增量1个单位对应1个字节,你这里凑巧了,sieof(int)是四个字节,但是由于上面一句赋值,只能对4个字节中的第一个字节有效赋值,其余三个字节是无效的。其实你的问题,只要定义:int *m_lpDib;就可以了。
    在循环中:
    *m_lpDib = i + j;
        m_lpDib ++;