我正在使用以下函數來創建一個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