reinterpret_cast指向char和unsigned char之间的指针陷阱?

moa*_*ala -1 c++ uuid char unsigned-char reinterpret-cast

我正在使用以下函数来创建UUID并将其以人类可读的形式写入预先分配的缓冲区.出了点问题.

void createUUID(char* pDst)
{
    UUID    lUUIDObj;
    UuidCreate(&lUUIDObj);
    unsigned char*  lDest = reinterpret_cast<unsigned char*>(pDst);
    UuidToStringA(&lUUIDObj, &lDest)
}
Run Code Online (Sandbox Code Playgroud)

在方法结束时,调试器说:

  • lDest = 0x01fe4fd8"df4a5ed8-c0d2-495a-84d7-ce0e07cf2113"
  • pDst = 0x0012ec7c"在"Ì"或"Ì"

我认为两者都有相同的内容,但事实并非如此.

发生了什么?谢谢.

Som*_*ude 5

综观文档UuidToStringA,它说:

RPC运行时库为StringUuid参数中返回的字符串分配内存.

这意味着在通话之后lDest不再指向pDst.