こんにちは私は自分の研究のための単純なベクトルクラスを作成していました。 変数を保存するだけですLONG 私はすべてをシンプルに保ちました。私が何もビルドしていないときは、エラー/警告が返されました その後、プログラムを実行した後は動作しますが、プログラムはクラッシュします。コンソールクラッシュ終了時(ループ)結束していないエラー
コードVector.h
class Vector{
public:
Vector();
void add(long i);
void getData();
private:
long *anArray;
long maxSize;
long position;
void reSize(int i);
}。
Vector.cpp
Vector::Vector(){
maxSize = 2;
anArray = new long[maxSize];
position = 0;
}
void Vector::add(long i){
if(position==maxSize-1)
reSize(maxSize * 2);
anArray[position] = i;
position++;
}
void Vector::reSize(int i){
long *temp = new long[maxSize];
for(int i =0; i<maxSize; i++)
{
temp[i] = anArray[i];
}
delete[] anArray;
anArray = temp;
}
void Vector::getData(){
for(int i = 0; i<position; i++)
{
cout << "Element" << i+1 << " : " << anArray[i] << endl;
}
}
メイン
int main()
{
Vector vecStore;
for(int i = 0; i < 1000; i++)
{
long a;
vecStore.add(a = i + 1);
}
cout << "GET DATA _________ :: " << endl;
vecStore.getData();
return 0;
}
プログラムがクラッシュしないかの小さな入力データ(例えば10-20) しかし、私は100またはさらに大きなそれを変更したとき。プログラムはいつかクラッシュし、いつかはクラッシュしません。
私は間違いをしましたか?
void Vector::add(long i){
if(position==maxSize-1)
reSize(maxSize * 2);
anArray[position] = i;
position++;
}
position==maxSize-1
で
:
あなたは
Vector
の線に沿って何かもっと欲しいもanArray
をクリーンアップするデストラクタが必要ですが、適切にこのエラーを修正するために、ここで推奨読書のビットですreSize'が壊れています。 'for(int i = 0; i私はそれをかなり手に入れません。 –
'i'をパラメータとして渡しますが、ループ内に新しい' i'を宣言します。 ** void Vector :: reSize( 'int i'){...for( 'int i = 0'; i
Bauss