Ich habe einen Vector folgenden Typ:
Code:
std::vector<ProfitChange> m_vctTechChanges;
ProfitChange ist wie folgend definiert:
Code:
struct ProfitChange
{
int iEnum;
int *piYieldChange;
int *piCommerceChange;
ProfitChange(void) {piYieldChange = NULL; piCommerceChange = NULL;}
~ProfitChange(void) {SAFE_DELETE_ARRAY(piYieldChange); SAFE_DELETE_ARRAY(piCommerceChange);}
void read(FDataStreamBase* pStream);
void write(FDataStreamBase* pStream);
};
Bei mir kommt es zum Absturz, wenn ich ein neues Element dem Vector hinzufüge.
Code:
ProfitChange *pkProfitChange = new ProfitChange;
pkProfitChange->iEnum = iIndex;
pkProfitChange->piYieldChange = piYieldChange;
pkProfitChange->piCommerceChange = piCommerceChange;
m_vctTechChanges.push_back(*pkProfitChange);
SAFE_DELETE(pkProfitChange)
Soweit ich weis, wird dem Vector eine Kopie hinzugefügt, weshalb die ursprüngliche Konstruktion gelöschen werden muss. Kann es sein, dass hier keine Kopie gespeichert wird sondern das Original? Wenn ich am Ende nicht SAFE_DELETE anwende, kommt es nicht zum Absturz.