I'm sort of lost on the no need to de-allocate and delete part? Does this mean you are allocating the chunk once and then simply using it for different buffers? If this is the case I don't think vector is what you need. Of course you could store a record structure in a vector indicating the starting offset of the chunk and the chunk size. This would be used as a lookup table into the large buffer.
Code:
struct BUFFER_CHUNK
{
DWORD dwLength;
DWORD dwOffset;
};
std::vector<BUFFER_CHUNK *> m_vChunks;
If this is the type of setup you are talking about then there are tree structures that can handle this type of sharing much more efficiently.