私はすでに私が答えを探していると言いますが、私には何が問題なのか説明してくれません。削除を理解する[+] C++
イム今では前に私はそれはいくつかのcomceptsの目的と理解を学ぶためのものであることをあなたに言わせて、このようにC++を使用しないように私に教えてC++
を学ぶ学生とイム。
最後の文でプログラムがクラッシュする。 delete [] tempVector; 私はなぜそれが起こるのか理解できませんdelete [] vector;うまく動作します。
エラー:arr.exeで遊ぶには、私はイムが間違っているのかを理解するのに役立ちますブレークポイント
をトリガしました。
ありがとうございました。
class BetterArray
{
private:
int* vector;
int count;
public:
BetterArray(int value);
BetterArray(int* vec, int size);
~BetterArray();
void add(int value);
int* getArray();
};
BetterArray::BetterArray(int value)
{
count = 1;
vector = new int[1];
vector[0] = value;
}
void BetterArray::add(int value){
int* tempVector = new int[count + 1];
for (int i = 0; i < count; i++)
tempVector[i] = vector[i];
tempVector[count] = value;
count++;
delete[] vector;
vector = tempVector;
delete[] tempVector; // programa crahses here.
}
あなたが言ったところでプログラムがクラッシュするとは思わない。しかし、あなたがコピーしたばかりのデータを解放する直前に、 'delete [] tempVector;'は両方のポインタが同じ場所を指しているので 'delete [] vector;'と同じです。 – drescherjm
'delete [] vector;の' vector'とは何ですか? –
'vector'はどのように宣言されていますか? –