- 448 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:02:59 ]
- push_backしていってvectorのサイズがでかくなったときにvector内部で再割り当てが起こってる。
なので&v[i-1]は途中から不正なポインタを指す。 なので本当は&v[i-1]が不変なのを期待しちゃダメ。 ↓こうやって最初に100確保しておけば再割り当てが起こらないだろうから大丈夫。 int main() { int i; std::vector<Test> v(100); Test b; b.p = NULL; v[0] = b; for (i=1;i<100;i++) { b.x = i; b.p = &v[i-1]; v[i] = b; } Test *c; c = &v[v.size()-1]; int count = 0; while ( c->p != NULL ) { printf("%d: %d\n",count++,c->x); c = c->p; } }
|

|