0
 int number;
        cout<<" Please select which item to change:"<<endl;

        for(int i=0;i<=count;i++)
        {
            cout<<i<<"   "<<v[i]->getName()<<endl;
        }


        cin>>i;
        cout<<"Current number of items:  "<<v[i]->getNumber()<<endl;
        cout<<"Enter new value: "<<endl;
        cin>>number;

これはswitchケース内ですが、プログラムは現在forループの後で終了しています。何か案は?

4

1 に答える 1

2
for(int i=0;i<=count;i++)

本当に使用する必要があります:

 for(int i=0;i<count;i++)

count要素があれば。アクセスしよv[ count ]うとすると、コレクションの最後を超えて 1 つ移動しようとしています (古典的な off-by-one エラー)。UB を呼び出しています。

于 2012-05-02T13:43:14.390 に答える