grazie .
posto un po di codice perch ho un problema di delete:
codice:
while(!m_pData->m_BeamLoadsIterator->ISEof()) {
tagLoadData* pLoadData = new tagLoadData();
//Flag per sapere se B prec. coincide con A corrente
bool bAB = ((LDTemp.dDistA == LDOld.dDistB) && (LDTemp.dValOverLA == LDOld.dValOverLB)
|| TagsLoadData.IsEmpty());//Sempre true la prima volta
//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);
pLoadData = new tagLoadData();
bNew = false;
LDOld = LDTemp;
m_pData->m_BeamLoadsIterator->MoveNext();
if(!m_pData->m_BeamLoadsIterator->ISEof())
m_pData->m_BeamLoadsIterator->LoadTagLoadsTemp(&LDTemp);
if(!CompareLDTemp(&LDTemp, &LDOld) ||m_pData->m_BeamLoadsIterator->ISEof()){
//se cambia qualcosa o sono alla fine aggiungo sempre il punto B finale,
//aggiungo al DomainModel e vado avanti
m_pData->m_BeamLoadsIterator->GetLoadData(pLoadData,&LDOld, false, false);
TagsLoadData.Add(pLoadData);
nTypeLoad = m_pData->m_BeamLoadsIterator->GetTypeLoad(LOAD_DISTR, LDOld.strCoordSys, LDOld.strType);
InsInDomainModel(&LDOld, &TagsLoadData, nTypeLoad);
bNew = true;
}
}
questa è la mia myfunc:
codice:
m_pData->m_BeamLoadsIterator->GetLoadData(pLoadData,&LDTemp, bNew, true);
e pLoadData è il mio pObject.
il problema è che all'esterno della mia classe viene fatto il delete di tutti i contenuti dell'array TagsLoadData.
ho 2 allocazioni di pObject(pLoadData) perchè devoaggiungere 2 volte nello stesso ciclo.
In questo modo mi escono dei memory leaks,probabilmente penso per la riallocazione di pObject.
Puo essere?
grazie.
ps.adesso sto riscrivendo il codice con il tuo metodo .
tu come risolveresti?
grazie.