fixed memory leak in operator=
This commit is contained in:
parent
349e7c3c46
commit
468c0173d9
1 changed files with 6 additions and 93 deletions
|
|
@ -50,13 +50,11 @@ std::ostream& operator<<(std::ostream& s, const ctvector_fp& v) {
|
|||
}
|
||||
|
||||
ctvector_fp::ctvector_fp(const ctvector_fp& x) {
|
||||
_data = 0;
|
||||
if (x._alloc > 0) {
|
||||
_data = new value_type[x._alloc];
|
||||
copy(x._data, x._data + x._alloc, _data);
|
||||
}
|
||||
else {
|
||||
_data = 0;
|
||||
}
|
||||
_size = x._size;
|
||||
_alloc = x._alloc;
|
||||
}
|
||||
|
|
@ -64,13 +62,12 @@ std::ostream& operator<<(std::ostream& s, const ctvector_fp& v) {
|
|||
ctvector_fp ctvector_fp::operator=(const ctvector_fp& x) {
|
||||
if (this == &x) return *this;
|
||||
if (_data) delete[] _data;
|
||||
_data = 0;
|
||||
if (x._alloc > 0) {
|
||||
if (_alloc > 0) delete[] _data;
|
||||
_data = new value_type[x._alloc];
|
||||
copy(x._data, x._data + x._alloc, _data);
|
||||
}
|
||||
else {
|
||||
_data = 0;
|
||||
}
|
||||
_size = x._size;
|
||||
_alloc = x._alloc;
|
||||
return *this;
|
||||
|
|
@ -120,92 +117,6 @@ std::ostream& operator<<(std::ostream& s, const ctvector_fp& v) {
|
|||
void ctvector_fp::clear() { fill(_data, _data + _size, 0.0); resize(0); }
|
||||
|
||||
|
||||
// //-------------------------------------//
|
||||
// // ctvector_float //
|
||||
// //-------------------------------------//
|
||||
|
||||
|
||||
// ctvector_float::ctvector_float(size_t n) : _size(0), _alloc(0), _data(0) {
|
||||
// resize(n);
|
||||
// }
|
||||
|
||||
// ctvector_float::ctvector_float(size_t n, value_type v0)
|
||||
// : _size(0), _alloc(0), _data(0) {
|
||||
// resize(n, v0);
|
||||
// }
|
||||
|
||||
// ctvector_float::ctvector_float(const ctvector_float& x) {
|
||||
// if (x._alloc > 0) {
|
||||
// _data = new value_type[x._alloc];
|
||||
// copy(x._data, x._data + x._alloc, _data);
|
||||
// }
|
||||
// else {
|
||||
// _data = 0;
|
||||
// }
|
||||
// _size = x._size;
|
||||
// _alloc = x._alloc;
|
||||
// }
|
||||
|
||||
// ctvector_float ctvector_float::operator=(const ctvector_float& x) {
|
||||
// if (this == &x) return *this;
|
||||
// if (_data) delete[] _data;
|
||||
// if (x._alloc > 0) {
|
||||
// _data = new value_type[x._alloc];
|
||||
// copy(x._data, x._data + x._alloc, _data);
|
||||
// }
|
||||
// else {
|
||||
// _data = 0;
|
||||
// }
|
||||
// _size = x._size;
|
||||
// _alloc = x._alloc;
|
||||
// return *this;
|
||||
// }
|
||||
|
||||
// ctvector_float::~ctvector_float() {
|
||||
// if (_data) delete[] _data;
|
||||
// _data = 0;
|
||||
// }
|
||||
|
||||
// void ctvector_float::resize(size_t n) {
|
||||
// size_t new_alloc = n+1;
|
||||
// value_type* newdata = new value_type[new_alloc];
|
||||
// size_t datalen = (n > _size ? _size : n);
|
||||
// if (_data) {
|
||||
// copy(_data, _data + datalen, newdata);
|
||||
// }
|
||||
// if (_data) delete[] _data;
|
||||
// _data = newdata;
|
||||
// _alloc = new_alloc;
|
||||
// _size = n;
|
||||
// }
|
||||
|
||||
// void ctvector_float::resize(size_t n, value_type v0) {
|
||||
// size_t new_alloc = n+1;
|
||||
// value_type* newdata = new value_type[new_alloc];
|
||||
// fill(newdata, newdata + new_alloc, v0);
|
||||
// size_t datalen = (n > _size ? _size : n);
|
||||
// if (_data) {
|
||||
// copy(_data, _data + datalen, newdata);
|
||||
// }
|
||||
// if (_data) delete[] _data;
|
||||
// _data = newdata;
|
||||
// _alloc = new_alloc;
|
||||
// _size = n;
|
||||
// }
|
||||
|
||||
// void ctvector_float::push_back(value_type x) {
|
||||
// size_t loc = _size;
|
||||
// if (_size == _alloc) {
|
||||
// resize(2*_alloc);
|
||||
// }
|
||||
// _data[loc] = x;
|
||||
// _size = loc + 1;
|
||||
// }
|
||||
|
||||
// void ctvector_float::clear() { fill(_data, _data + _size, 0.0); resize(0); }
|
||||
|
||||
|
||||
|
||||
//-------------------------------------//
|
||||
// ctvector_int //
|
||||
//-------------------------------------//
|
||||
|
|
@ -231,6 +142,8 @@ std::ostream& operator<<(std::ostream& s, const ctvector_fp& v) {
|
|||
|
||||
ctvector_int ctvector_int::operator=(const ctvector_int& x) {
|
||||
if (this == &x) return *this;
|
||||
if (_data) delete[] _data;
|
||||
_data = 0;
|
||||
if (x._alloc > 0) {
|
||||
_data = new value_type[x._alloc];
|
||||
copy(x._data, x._data + x._alloc, _data);
|
||||
|
|
@ -241,7 +154,7 @@ std::ostream& operator<<(std::ostream& s, const ctvector_fp& v) {
|
|||
}
|
||||
|
||||
ctvector_int::~ctvector_int() {
|
||||
if (_alloc > 0) delete[] _data;
|
||||
if (_data) delete[] _data;
|
||||
_data = 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue