C++ vectorのコピー

vector v, w;
for(int i=0; i<320000; i++){
  v.push_back(i);
}
w.reserve(320000);
copy(v.begin(), v.end(), w.begin());

だとなんかセグフォが出た。

w.assign(v.begin(), v.end() );

で、何とかなったっぽいけど何だこれ。どうなってんの。