Well, considering that I've tried on the magnitude of about 35 things...
which "compilable" set of code would you like? You'd probably have a
problem with that also...
The fact is that I haven't deleted the contained pointer 'AnotherClass'
twice... I haven't been able to get to that point yet. Try these three
lines of 'compilable code' and you'll get the same effect:
vector<int*> a;
a.push_back(new int(1));
//or
a.push_back(new int);
//or
Now when I do
vector<int> a;
a.push_back(10);
//All is good....
On further inpsection,
vector<MyClass*> MyList;
int a = MyList.size();
// a in the debugger comes out to be -100137 or something in that
//area... not "0"
If, "Using my crystal ball, however, leads me to believe that you're
corrupting your free store, probably by deleting the contained pointer to
`AnotherClass' twice." is the best post you could come up with... why even
post? Use your 'crystal' ball to find another post or better yet.... use it
to find the 'compilable code' and it's solution. Thanks. :-)
Regards,
Venn
"Artie Gold" <ar*******@austin.rr.com> wrote in message
news:37*************@individual.net...
Venn Syii wrote: I've searched all the forums but cannot find an answer to this question.
I do the following:
vector<MyClass*> myClassList;
Later in the program I try to add to myClassList with a .push_back(...)
I get an "out of memory" runtime error. I know I'm not out of memory
because normal vectors such as vector<int> a, still work, and still work
fine.
I've tried the following .push_back's
1) myClassList.push_back(new MyClass)
2) myClassList.push_back(new MyClass())
3) MyClass *Temp = new MyClass;
myClassList.push_back(Temp)
I have also tried changing the vector to
vector<MyClass> myClassList;
And have tried .push_back(..) in many different ways with it also. No
luck, still "out of memory" runtime error.
MyClass is defined as follows:
class MyClass
{
AnotherClass* AClass;
int a;
int b;
char * a;
char *b;
MyClass() {};
~MyClass() {};
void Create() {AClass = new AnotherClass;};
void Destroy() {if(AClass) delete(AClass); AClass = NULL};
}
I've also tried changing AnotherClass* AClass to AnotherClass AClass and
still the same problem.
Questions:
1) What could be causing the vector to show an "out of memory" error?
2) All the tutorials I've read use simple types in their vectors... what
is the proper way to use vectors with created classes and pointers?
Best Regards,
Venn
Post minimal *real* (compilable, runnable) code that exhibits the problem.
Using my crystal ball, however, leads me to believe that you're corrupting
your free store, probably by deleting the contained pointer to
`AnotherClass' twice.
HTH,
--ag
--
Artie Gold -- Austin, Texas
http://it-matters.blogspot.com (new post 12/5)
http://www.cafepress.com/goldsays