Я использую следующую функцию, чтобы создать 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 "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ"
Я думал, что оба будут иметь одинаковый контент, однако это не так как таковые.
Что случилось? Спасибо.
Вы отладки оптимизированного сборки? Это, вероятно, не позаботится о сохранении 'pDst' через окончательный вызов функции, так как это не нужно после присвоения' lDest'. Что произойдет, если вы выйдете из функции и посмотрите результат с точки зрения вызывающего? –
Абсолютно нет, это отладочная сборка (/ MDd), и после ее возвращения значение в моем буфере также равно ÌÌÌÌÌÌÌÌÌ ... – moala