simple vector question
I have a complex class that I am storing in a vector. I seem to have a
memory leak and I think it's because I don't really know how to use
vectors properly. Not only that but my code is overly complex.
/***************************************************/
class BmTrack {
public:
BmTrack();
BmTrack(BmDetection* detection, double deltaT, double sigma1, double
sigma2, int* track_total);
~BmTrack();
private:
int track_num; //track number
int track_class; //track classification
int track_class2;
CvKalman* kf; //kalman filter structure
std::vector<double> x; //track locations for each frame
std::vector<double> y;
double v; //average track velocity
double v2;
int lane_num; //lane number
int track_life; //count down to removal of track
CvMat* W; //class membership
CvMat* logW; //log for probabililty
CvMat* Meas; //measurement history
int flag_image; //tells if track image saved
IplImage* image; //image of object
CvRect bb; //bounding box
};
/***************************************************/
/*Tracks*/
typedef std::vector<BmTrack*> BmTrack_vector;
class BmTracks {
public:
BmTracks();
BmTracks(BmDetections* detections, double deltaT, double sigma1,
double sigma2, int* track_total);
~BmTracks();
private:
BmTrack_vector tracks;
CvMat* Sigma_meas; //inverse S for var of measurements
int T_frames; //number of frames to track before taking snapshot
};
/***************************************************/
I create create the tracks object by a loop
for (int i=0; i<num_Tracks; i+=1) {
tracks.push_back(new BmTrack(d,deltaT,sigma1,sigma2,track_total));
}
The size of the vector is constantly changing by removing elements from
within the vector. The way I'm dong it looks something like this.
BmTrack* t;
for(i=num_tracks-1; i>=0; i-=1) {
if(dead_track[i]) {
t = tracks.at(i);
delete t;
tracks.erase(tracks.begin()+i);
}
}
Am I doing something wrong here. I don't have a copy or assignment
method defined for BmTrack. And is it a bad idea to create the
BmTrack* t variable outside of my loop? Thanks for any help.
Brendan
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]