Il problema c'è l'hai perché aggiungi due volte lo stesso puntatore a TagsLoadData quando l'if è true (per altro sovrascrivendo i dati alla seconda chiamata di < GetLoadData > )
codice:
//se punto B prec. è diverso dal Punto A aggiungo anche B precedente
if (!bAB && !TagsLoadData.IsEmpty()){
m_pData->m_BeamLoadsIterator->GetLoadData(pLoadData,&LDOld, false, false);
TagsLoadData.Add(pLoadData);
bNew = true;
}
//aggiungo sempre il punto A
m_pData->m_BeamLoadsIterator->GetLoadData(pLoadData,&LDTemp, bNew, true);
TagsLoadData.Add(pLoadData);
Per risolvere basta fare come ho detto prima: lasciare che sia la funzione ad allocare l'oggetto.
codice:
//se punto B prec. è diverso dal Punto A aggiungo anche B precedente
if (!bAB && !TagsLoadData.IsEmpty()){
tagLoadData* pLoadData = m_pData->m_BeamLoadsIterator->GetLoadData(&LDOld, false, false);
TagsLoadData.Add(pLoadData);
bNew = true;
}
//aggiungo sempre il punto A
tagLoadData* pLoadData= m_pData->m_BeamLoadsIterator->GetLoadData(&LDTemp, bNew, true);
TagsLoadData.Add(pLoadData);
così ogni puntatore avra una zona di memoria diversa a cui fa riferimento.