this maybe somewhat off topic, but I just don't understand, why I generate memory leaks.
I have a function, which is called every 500ms by a timer.
[EDIT:] The objects used are of one class calles "Patient".
The "patientsTemp" holds a local copy of the member array "m_patients"
Code: Select all
WX_DECLARE_OBJARRAY(Patient, PatientenArray);
Patient *m_p;
PatientenArray m_patients;
PatientenArray patientsTemp = m_patients;
Code: Select all
Patient patTemp("", "", "", "", "", "", "", "", "", "", "", "");
//some other stuff
patTemp.ms_dataDate = wxDateTime::Now().FormatISOCombined();
patTemp.ms_pid = pid;
patTemp.ms_firstname = firstname;
patTemp.ms_lastname = lastname;
patTemp.ms_birthday = birthday;
for(int z=0; z<patientsTemp.Count();z++)
{
if(patientsTemp.Item(z).ms_pid == pid)
{
patientsTemp.RemoveAt(z);
break;
}
}
if(!bNewPatFound)
{
*m_p = patTemp;
bNewPatFound = true;
}
Code: Select all
Patient *patTemp = new Patient("", "", "", "", "", "", "", "", "", "", "", "");
//some other stuff
patTemp->ms_dataDate = wxDateTime::Now().FormatISOCombined();
patTemp->ms_pid = pid;
patTemp->ms_firstname = firstname;
patTemp->ms_lastname = lastname;
patTemp->ms_birthday = birthday;
for(int z=0; z<patientsTemp.Count();z++)
{
if(patientsTemp.Item(z).ms_pid == pid)
{
patientsTemp.RemoveAt(z);
break;
}
}
if(!bNewPatFound)
{
*m_p = *patTemp;
bNewPatFound = true;
}
delete patTemp;
//wxDELETE(patTemp); //isn't working either
Code: Select all
*m_p = *patTemp;
Code: Select all
m_patients.Add(m_p);
And relatet to this: Does this generate mem leaks?
Code: Select all
wxExecute(exec, wxEXEC_ASYNC, new wxProcess(wxPROCESS_DEFAULT));
But by changing this, I even crashed my application:
Code: Select all
wxProcess execProcess(wxPROCESS_DEFAULT);
long lExec = wxExecute(exec, wxEXEC_ASYNC, &execProcess);
Greets
Natu