Se llama a Destructor cuando presiono el vector

Tengo esta definición de clase:

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;
    // ...
}

(Descripción de NPStream)

y su implementación:

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;
    // ...
}

Ahora, cuando ejecuto este código:

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

A veces tengo un error endelete [] _stream.headers; en el destructor deFlashStream, que se llama cuando yopush_back() alvector<FlashStream> _streams.

Yo leoesta pregunta sobre SO y algunos otros, pero de todos modos no saben cómo solucionar el problema de manera elegante y eficiente. Puede ser que el problema esté en el constructor de copias, pero no sé cómo puedo hacerlo con la asignación de memoria paraNPStream.headers yNPStream.url?

Respuestas a la pregunta(4)

Su respuesta a la pregunta