#ifndef DATACONTAINER_H #define DATACONTAINER_H #include #include class Data_Container { public: Data_Container(int size) : m_data(size) { std::cerr << "creating an data container" << std::endl; } void* get_ptr() { return reinterpret_cast(&m_data.front() ); } int get_size() { return m_data.size(); } void set_data_used(int size) { m_data_used = size; } int get_data_used() { return m_data_used; } private: std::vector m_data; int m_data_used; }; #endif The producer: for(;;) { Data_Container ch(1000); ch.set_data_used( producer.produceData( ch.get_ptr() , 1000 /* max size to produce*/ ) ); buffer.push_front(ch); }