コード(簡易版)
(の一部) クラス定義:
struct foo {
std::vector<int> data;
foo(int a=0):data(a+1,0) {}
void resize(int a) {
data.resize(a+1,0);
}
}
一部の操作を簡素化するために、 を 1 インデックスにしa+1
たいからです。data
グローバル スコープ:
int k;
foo bar;
main
関数内:
std::cin>>k;
bar.resize(k);
関数の後半で、にアクセスするmain
別のメンバー関数 ( 内) への呼び出しがあり、 ( )が発生します。foo
data
segmentation fault
segsegv
data.size()
デバッグ後、が 0 を返すことがわかりました。これは非常に予想外です。
非常に長いデバッグセッションの後、私は問題がresize
ing にあることに非常に確信を持っています。
PSグローバルスコープに何かを入れたり、クラスメンバーにパブリックアクセスを与えたりしたことで私を非難しないでください。プログラミング競技会の練習をしているだけなので、「本物の」プログラムを書いているわけではありません。