我正在尝试将GUID指针初始化为空值以便与DirectX一起使用...我正在编写一个.X文件解析器。
初始化GUID指针时遇到问题!我需要将来自文件的输入GUID类型与内部定义的模板类型进行比较,以便告诉我的程序如何处理“来自文件的模板”中的信息。
这是我到目前为止所知道的:
BOOL cXMeshParser::ParseObject(LPD3DXFILEDATA pDataObj, DWORD Depth, void **data)
{
if(pDataObj->IsReference())
return true;
GUID pTemplateGUID;
memset(&pTemplateGUID, 0, sizeof(GUID));
GUID *pCpyGUID;
memset(&pCpyGUID, 0, sizeof(GUID));
memcpy(&pCpyGUID, &pTemplateGUID, sizeof(GUID));
pDataObj->GetType(pCpyGUID);
int isEqual =0;
isEqual = IsEqualGUID(*pCpyGUID, TID_D3DRMMesh);
if(isEqual){
...
}
}当我运行调试器时,pCpyGUID中的数据不正确(非NULL)
我使用了一个常规的GUID定义( GUID pTemplateGUID)来尝试将GUID复制到const GUID* (我能够初始化GUID ...非GUID*)...the解析器当前的问题是无法评估模板数据和内部定义之间的比较...
我的问题是:
如何为常量GUID*编写有效的初始化?
发布于 2012-01-31 02:15:21
pCpyGUID只是一个指针,这意味着它的值是一个地址。因为您没有初始化这个地址,所以它指向某个随机的内存位置,该位置可能是不可读和不可写的。
在任何情况下,您也可以将pTemplateGUID置零,然后尝试将其复制到pCpyGUID...
看起来你不需要同时使用pTemplateGUID和pCpyGUID。
你可能想要这样做:
GUID *pCpyGUID = &pTemplateGUID;所以pCpyGUID指向了pTemplateGUID。但你不需要这个。
试试这个:
GUID templateGUID;
pDataObj->GetType(&templateGUID);
int isEqual = IsEqualGUID(templateGUID, TID_D3DRMMesh);
if(isEqual){
...https://stackoverflow.com/questions/9068489
复制相似问题