Деструктор вызывается, когда я нажимаю на вектор

У меня есть это определение класса:

class FlashStream
{
public:
    explicit FlashStream(const char * url, vector<uint8> * headers, vector<uint8> * data, void * ndata, void * notifyData = NULL, uint32 lastModified = NULL);
    ~FlashStream();
private:        
    NPStream      _stream;
    // ...
}

(Описание NPStream)

и его реализация:

FlashStream::FlashStream(const char * url, vector<uint8> * headers, vector<uint8> * data, void * ndata, void * notifyData, uint32 lastModified)
{
    // ...
    memset(&_stream, 0, sizeof(NPStream));

    _stream.headers = new char[data->size()]; 

    memcpy((void*)_stream.headers, &(*data)[0], data->size());
    // ...
}

FlashStream::~FlashStream()
{
    // ...
    if(_stream.headers)
        delete [] _stream.headers;
    _stream.headers = NULL;
    // ...
}

Теперь, когда я запускаю этот код:

// ...
vector<FlashStream> _streams;
// ...
_streams.push_back(FlashStream(url, headers, data, _npp.ndata, notifyData, lastModified));
// ...

Иногда у меня возникает ошибка вdelete [] _stream.headers; в деструктореFlashStream, который называется, когда яpush_back() кvector<FlashStream> _streams.

Я читаюэтот вопрос на ТА и еще несколько, но все равно не знают, как элегантно и эффективно решить проблему. Может быть, проблема в конструкторе копирования, но я не знаю, как я могу сделать это с выделением памяти дляNPStream.headers а такжеNPStream.url?

Ответы на вопрос(4)

Ваш ответ на вопрос