copy of vector must allocate new memory only on attempt to modify it.
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<char> vec(100 * 1000 * 1024, 3); // allocating 100*1000*kib, nice.
vector<char> array[] = {vec,vec,vec,vec}; // now we using 500*1000*kib, VERY NICE, no more!
return 0;
}