I am alittle bit confused on topic of allocating objects on heap vs allocating on stack, and when and how delete() should be called.
For example I have class Vector. I would like to make an array of these.
I could either do this
Vector** v = new Vector*[100]; //create an array of 100 pointers to 100 Vector objects
This as I understand would allocate everything (well except pointer addresses) on a heap? So to free memory I would need to:
for (int i = 0; i < 100; ++i)
{
delete(v[i]);
}
delete(v);
OR just
delete(v);
is enough?
Now another example:
Vector* v = Vector[100];
Whats happening in this case? Where does allocation happen? Heap or stack? Do I still need to call
delete(v);
But this is not all question, sorry for long post..
example:
class Vector
{
int x, y, z;
}
Vector* v = new Vector();
wheres x, y, z allocated? Heap or stack?
or how about this:
class Vector2
{
int items[10];
}
Vector2* v2 = new Vector2();
where are items[10] allocated? How do I delete v2? Do i need custom destructor?
Also last but not least how about this one:
class Vector3
{
int* items;
}
Vector3 v3 = Vector3();
Where is items pointer stored? heap or stack? How do I delete this?
Thanks and sorry for long question. Ive been having trouble with this stuff for long time and couldnt really find any complete explanation on line.