Re: Best way to allocate memory in the constructor
Hi,
Salvatore Benedetto wrote:
Hi,
first of all, thanks to everybody for taking some time and aswering
my question.
Now back to my problem.
I have used char* and int* and my previous email, but that was just an
example. In my constructor, I actually allocate array of structures, or
single structure. I do that with malloc, instead of new(), because there
is not constructor I need to call, and malloc should be faster if I
don't mistake.
Since in my code, speed and low-memory used are a _must_, I wanted to
avoid to use STL components (std::vector,std::auto_ptr, etc..) as they
introduce some overhead, even if little.
You can use a single malloc() with aggregated size. I assume, the
structs are named s1, s2 and s3 and you want space for 100x s1, 200x s2
and 150x s3.
The code looks like this:
class Foo
{
public:
Foo() : p1(0), p2(0), p3(0)
{
char* p = static_cast<char*>(
malloc(100*sizeof(s1)+200*sizeof(s2)+150*sizeof(s3))
);
if (p)
{
p1 = reinterpret_cast<s1*>(p);
p2 = reinterpret_cast<s1*>(p+100*sizeof(s1));
p3 = reinterpret_cast<s1*>(p+100*sizeof(s1)+200*sizeof(s2));
}
else
{
// ...
}
}
~Foo()
{
free(p1);
}
private:
s1* p1;
s2* p2;
s3* p3;
};
Best regards,
Ole Hinz
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]