Re: Is there a memory leak in this code ?
Diwa wrote:
// -----------------------------------
class Column
{
public:
string name;
vector<int> values;
};
// -----------------------------------
void loadValues()
{
Column p = new Column();
You probably meant
Column *p = new Column();
p->values.push_back(55); // <--- Line 1
p->values.push_back(66); // <--- Line 2
delete p; // <--- Line 3
}
// -----------------------------------
Are the values inserted (Line 1 and 2) on
the stack or on the heap ?
Values that appear in the code (the literals '55' and '66')
are usually neither in the stack nor in the heap (free store)
since they are literals, they are usually in the code (parts
of the instruction that places them where arguments are
transferred to the function). Values that the container
'p->values' stores are _always_ in the free store, the vector
allocates all its values there, unless you provide some kind
of custom allocator, which you didn't.
Is there a memory leak for the two inserted
values inspite of the "delete p" at line 3 ?
No.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask