オブジェクトの配列を再割り当てしようとしていますが、セグメンテーション違反が発生しています。
これはコードです:
Array.h
class Array
{
private:
int * _Array;
int length;
int id;
Array(int size, bool insert);
static Array** allsArrays;
static size_t sizeAll;
static int amountOfArrays;
public:
Array();
Array(int size);
Array(const Array& source);
};
配列.cpp
int Array::amountOfArrays=0;
size_t Array::sizeAll=10;
Array** Array::allsArrays= new Array*[sizeAll];
Array Array::intitialsArray(0, false);
//constructor
Array::Array(int size, bool insert)
{
if(size != 0)
{
sArray = new int [size];
for(int i=0; i<size; i++)
{
sArray[i]=0;
}
}
else
sArray = NULL;
length = size;
id=0;
if(insert == true)
{
insertToAllsArr(*this);
amountOfArrays++;
id = amountOfArrays;
}
}
//the part that crashes, part of insertToAllsArr function
//realloc
if(sizeAll < amountOfArrays)
{
int oldSize=sizeAll;
sizeAll += 10;
Array **tmp=new Array*[sizeAll];
for( i=0;i<(int)sizeAll;i++)
{
*tmp = &intitialsArray;
if(i < oldSize)
{
*tmp = *allsArrays;
++allsArrays;
}
++tmp;
}
for(i=0; i< (int)sizeAll ; i++ ,--tmp);
for(i=0 ; i< oldSize ; i++, --allsArrays);
allsArrays= new Array*[sizeAll];
for( i=0;i<(int)sizeAll;i++)
{
*allsArrays = *tmp;
++allsArrays;
++tmp;
}
}
別の関数から allArrays にアクセスしようとすると、セグメンテーション違反が発生します。私は何を間違っていますか?(なぜ std を使用しないのかと尋ねる人のために、コピー コンストラクターが原因で使用できません) ありがとうございます。