我在我的函数里面是这样将GUID转为字符串的
////////////////////////////
LPOLESTR wRes = NULL;
::StringFromCLSID(guid,&wRes );
///////////////////////////但我不知道这样得到的字符串指针需不需要我释放,
显然wRes所指的内存是系统帮我分配得到的,
我的理解是如果不需要我释放,那么有两种可能:
1.wRes指向的实际上是常量区
2.wRes指向的是堆空间,那么系统就要去释放它,什么时候释放呢如果需要我释放,该怎么做?
---------------------------------------------------------
以上是我的理解,我不知道对错,诚心向大家请教

解决方案 »

  1.   

    The StringFromCLSID function calls the StringFromGuid2 function to convert a globally unique identifier (GUID) into a string of printable characters.The caller is responsible for freeing the memory allocated for the string by calling CoTaskMemFree. 从这个资料来看,这个字符串需要你自己来释放,释放方法是调用函数CoTaskMemFree进行
      

  2.   

    谢谢,
    既然这样,那我还不如直接用StringFromGUID2好了//sizeof(L"{00000000-0000-0000-0000-000000000000}")=78;
    WCHAR wRes[78] = {0};
    StringFromGuid2(guid,wRes,78);这样是不是就没问题了,还省得我去释放