Помогите новичку. Есть такой код:
#include <iostream>
//прочие includ'ы
using namespace std;
template<typename T>
class Heap
{
T _heap;
public:
Heap():_heap(0) {}
Heap(T V): _heap(V) {}
Heap<T> operator = (T const& cv){ _heap = (T)cv;}
operator Heap() {return _heap;}
operator Heap*() {return (Heap*)_heap;}
bool operator == (T const& cv)
{
return _heap == cv ? true : false;
}
bool operator != (T const& cv)
{
return _heap != cv ? true : false;
}
~Heap(){}
}
typedef Heap<unsigned short int> Cell;
/* тут идут всякие функции, векторы и бла бла бла
...
...
...
*/
int main(int argc, char* argv[])
{
int ar_size = 100;
if(argc > 1)
ar_size = atoi(argv[1]);
if((ar_size % 2) != 0)
ar_size--;
Cell **Area = new Cell *[ar_size];
for(int i = 0; i <= ar_size; i++)
Area[i] = new Cell[ar_size];
/*Что-то происходит...
...
...
...
Дальше идет очистка памяти.
вызывается erase для векторов и т.д. и т.п.
*/
cout<<"Almost ";//проверка - доходит ли до этого места?
for(int i = 0; i <= ar_size; i++)
delete[] Area[i];// вот тут проблема, если ar_size <= 100
// все проходит нормально, если больше - ошибка сегментации.
cout<<"Done"<<endl;//до этого места не всегда доходит
return 0;
}
Кто нибудь сталкивался с подобного рода проблемой? Если да, то пожалуйста опишите способы решения
Заранее благодарен.