C
capes
Hi,
I have a structure called Tissue and I use it in a matrix like this:
vector < vector < Tissue* > > tissueArray(cRows);
This whole function works great for a matrix size of 2X2 to 15X15.
Beyond that it crashed with a STATUS_STACK_OVERFLOW exception!!!
1. Why does his happen?
2. How do I fix it?
3. At some point I may go to a 300X300 array. What happens then?
Thanks a lot for your time and attention!!!!!
Here are the details of my code
1.
This is the Tissue struct:
struct TissueStruct
{
TissueType type; // fibre or vessel
TissueStimulus stimulus;
TissueState state;
double tpo2;
double po2;
double deficit;
double demand;
double x;
double y;
double v;
double u;
double Iext;
};
2.
I populate the tissueArray matrix (or vector of vector of Tissue) with
a init dunction like this:
for (int i = 0; i < cRows; i++)
{
//creating a row of tissue cells
vector <Tissue*> trow(cCols);
for (int j=0; j<cCols; j++)
{
if (type == Fibre)
{
trow.push_back(createFibre());
type = Vessel;
}
else
{
trow.push_back(createVessel());
// cout << "Type Vessel " << j << " " << trow[j]->type << endl;
type = Fibre;
}
}
// cout << trow.size() << endl;
tarray.push_back(trow);
}
}
3.
The createFibre and createVessel functions do the actual memory
allocation with the new keyword:
Tissue* createFibre()
{
Tissue* tissue;
tissue = new (Tissue);
tissue->type = Fibre;
tissue->po2 = Fpo2;
tissue->state = Inactive;
tissue->stimulus = Absent;
tissue->deficit = tissue->demand = 0.0;
tissue->x = tissue->y = tissue->Iext = tissue->v = tissue-> u =
tissue->tpo2= 0.0;
return (tissue);
}
I have a structure called Tissue and I use it in a matrix like this:
vector < vector < Tissue* > > tissueArray(cRows);
This whole function works great for a matrix size of 2X2 to 15X15.
Beyond that it crashed with a STATUS_STACK_OVERFLOW exception!!!
1. Why does his happen?
2. How do I fix it?
3. At some point I may go to a 300X300 array. What happens then?
Thanks a lot for your time and attention!!!!!
Here are the details of my code
1.
This is the Tissue struct:
struct TissueStruct
{
TissueType type; // fibre or vessel
TissueStimulus stimulus;
TissueState state;
double tpo2;
double po2;
double deficit;
double demand;
double x;
double y;
double v;
double u;
double Iext;
};
2.
I populate the tissueArray matrix (or vector of vector of Tissue) with
a init dunction like this:
for (int i = 0; i < cRows; i++)
{
//creating a row of tissue cells
vector <Tissue*> trow(cCols);
for (int j=0; j<cCols; j++)
{
if (type == Fibre)
{
trow.push_back(createFibre());
type = Vessel;
}
else
{
trow.push_back(createVessel());
// cout << "Type Vessel " << j << " " << trow[j]->type << endl;
type = Fibre;
}
}
// cout << trow.size() << endl;
tarray.push_back(trow);
}
}
3.
The createFibre and createVessel functions do the actual memory
allocation with the new keyword:
Tissue* createFibre()
{
Tissue* tissue;
tissue = new (Tissue);
tissue->type = Fibre;
tissue->po2 = Fpo2;
tissue->state = Inactive;
tissue->stimulus = Absent;
tissue->deficit = tissue->demand = 0.0;
tissue->x = tissue->y = tissue->Iext = tissue->v = tissue-> u =
tissue->tpo2= 0.0;
return (tissue);
}