在一个应用程序中调用dll中的函数,一个LPBYTE型指针(即LPBYTE *p)p作为参数传给这个函数。在函数返回前把一块内存区地址付给这个LPBYTE指针。每次要给*p赋值都出错。该怎么解决?bow

解决方案 »

  1.   

    void xxx(LPBYTE *p)
    {
    BYTE *p1 = new BYTE[22];
    *p = p1;
    }调用:
    LPBYTE p = NULL;
    xxx(&p);
      

  2.   

    如果想把地址传给过去,你的目的大概是相传过去一个变量,然后在dll里申请空间,同时把这块空间的指针赋给这个变量,函数结束后,程序可以使用这块空间。如果这样,你需要传递一个二级指针。
    ////////////////////
    LPBYTE lpBuf = NULL;MyMemAlloc(&lpBuf);///////INT MyMemAlloc(LPBYTE *pp)
    {
    LPBYTE lptemp = new BYTE[255]; *pp = lptemp; return 255;
    }
      

  3.   

    我想问一下楼上的,为什么不直接写成*pp=new BYTE[255]?