我在com中有一个接口的方法:
typedef struct REC
{
   long age;
};
STDMETHODIMP CRecManage::GetStudent(REC **pRec)在客户端用
REC *pRec=NULL;
reccom->GetStudent(&pRec);来取值,那么我的com端,应该怎样分配内容,那么又在哪释放呢?
帮忙啊!分数不够可再加

解决方案 »

  1.   

    那得看你GetStudent函数的实现了。
    如果返回的是New出来的REC,那么客户端需释放。
    如果返回的是reccom的成员变量,在栈区,那么不需要客户端管理了。
      

  2.   

    一般是传递接口指针的时候才用**。
    我觉得你这样就足够了:
    STDMETHODIMP CRecManage::GetStudent([out]REC *pRec)
    ......
    REC rec;
    reccom->GetStudent(&rec);

    REC* pRec = new REC;
    reccom->GetStudent(pRec);
    delete pRec;
    pRec == NULL;
      

  3.   

    同意楼上两位的看法。
    最好是像ColderRain(一切尽在不言中) 说的,自己分配自己释放,肯定不会出问题。
      

  4.   

    所有东西都是自己控制怎么写都好
    但如果是new 出来一个数组,还是要在外面new比较好
      

  5.   

    你可以在server端使用CoTaskMemAlloc分配内存,在客户端使用CoTaskMemFree释放内存。