我正在使用以下函数来创建一个UUID,并将其以可读的形式写入预先分配的缓冲区中。出了点问题。指针上的reinterpret_cast char和unsigned char之间的陷阱?
void createUUID(char* pDst)
{
UUID lUUIDObj;
UuidCreate(&lUUIDObj);
unsigned char* lDest = reinterpret_cast<unsigned char*>(pDst);
UuidToStringA(&lUUIDObj, &lDest)
}
在该方法结束时,调试器表示:
- lDest = 0x01fe4fd8 “df4a5ed8-c0d2-495a-84d7-ce0e07cf2113”
- pDst = 0x0012ec7c “ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ”
我认为两者都会有相同的内容,但它不是ca SE。
发生了什么事?谢谢。
你在调试优化的建立?这可能不会在最后的函数调用中保留'pDst',因为在分配给'lDest'后不需要。如果你退出该功能会发生什么情况,并从调用者的角度看结果? – 2012-01-17 11:25:20
绝对不是,这是一个调试版本(/ MDd),一旦返回,我的缓冲区中的值也是太对于太太太太太... – moala 2012-01-17 11:28:45