私は、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。
どうしましたか?ありがとうございます。
あなたは最適化されたビルドをデバッグしていますか?それは 'lDest'への代入の後に必要ではないので、最終関数呼び出しの間に' pDst'を保持することはおそらく気にしません。関数から抜け出し、呼び出し元の視点から結果を確認するとどうなりますか? –
これはデバッグビルド(/ MDd)であり、一度返されると、私のバッファ内の値もまたです。 – moala