问题是这样的,我保存进一个数据然后立即取出来,这时数据是一致的。
但是我如果保存进队列两个数据,然后取出来先前的那个,发现与原来保存进去的不一致了。
各位前辈请告诉我,这是什么原因呀
有兴趣的可以看看源码。队列的数据结构如下:
struct OutPageData
{
BSTR parentFileName;
BSTR parentLinkText;
BSTR parentLinkAddr;//注意,这一项并不是所有的所有被保存的都有,像Semantic Link 就没有 LinkAddr和CertaintyFactor
BSTR parentCertaintyFactor;//注意,这一项并不是所有的所有被保存的都有,像Semantic Link 就没有 LinkAddr和CertaintyFactor
BSTR currentFileName;
BSTR currentLinkText;
BSTR currentLinkAddr;
BSTR currentCertaintyFactor;
OutPageData * next;
};
入队列操作如下:void COutFileQueue::AddTail(OutPageData *node)
{
OutPageData * newNode = new OutPageData;
newNode->next = NULL;
newNode->currentCertaintyFactor =  SysAllocString(node->currentCertaintyFactor);
newNode->currentFileName =  SysAllocString(node->currentFileName);
newNode->currentLinkAddr =  SysAllocString(node->currentLinkAddr);
newNode->currentLinkText =  SysAllocString(node->currentLinkText);
newNode->parentCertaintyFactor =  SysAllocString(node->parentCertaintyFactor);
newNode->parentFileName =  SysAllocString(node->parentFileName);
newNode->parentLinkAddr  =  SysAllocString(node->parentLinkAddr);
newNode->parentLinkText  =  SysAllocString(node->parentLinkText);
if(Head==NULL)
{
Head = newNode;
DisplayOutData(newNode);
DisplayAllQueueData();
return;
}
OutPageData *tempData = Head;
while(tempData->next!=NULL)
{
tempData = tempData->next;
}
tempData->next = newNode;

}
出队列操作如下:void COutFileQueue::GetHead(OutPageData *node)
{
if(Head!=NULL)
{
node->currentCertaintyFactor =  SysAllocString(Head->currentCertaintyFactor);
node->currentFileName  =  SysAllocString(Head->currentFileName);
node->currentLinkAddr  =  SysAllocString(Head->currentLinkAddr);
node->currentLinkAddr =  SysAllocString(Head->currentLinkText);
node->next = NULL;
node->parentCertaintyFactor =  SysAllocString(Head->parentCertaintyFactor);
node->parentFileName =  SysAllocString(Head->parentFileName);
node->parentLinkAddr =  SysAllocString(Head->parentLinkAddr);
node->parentLinkText =  SysAllocString(Head->parentLinkText);
}
else
node = NULL;
}