On Mon, Sep 17, 2012 at 9:55 AM, Lou godio <lgod...@gmail.com> wrote:
> Dave,
> Are  C++ inline functions (not intended for perl binding) OK ?
> Are there  any problems with malloc ( ) calls being used within C++ code ?


Let's talk about malloc first:

Are you writing C++ code that uses malloc, or are you using
Inline::CPP to handle C code?

If the latter, you can eliminate some complexity by working directly
with Inline::C, but should be using the Perl memory allocation macros
"Newx", "Newxc", or "Newxz" (see perlguts).

If you're actually writing C++ code, you should probably be using
C++'s "new".  'new' is the C++ way of allocating dynamic memory.  The
advantages to using it when writing true C++ code are numerous.  One
advantage is that 'new' ensures that your object's constructor gets
called (malloc doesn't handle this for you).  New is also type-safe
(malloc isn't).  And it can be overloaded for non-trivial classes
(malloc can't in any useful way).  Similarly, 'delete' (as opposed to
free) assures that destructors are called, and in the proper order.


As for inline functions; they are perfectly legal in Inline::CPP
whether or not they're intended for Perl binding.  There's even a set
of tests in grammar/t/03inline.t that verify they work as they should.
 The 'inline' keyword in specific will be honored to the same degree
that your compiler honors it (the compiler makes no guarantees; it
simply takes the request into consideration, and then does what it
wants).




-- 

David Oswald
daosw...@gmail.com

Reply via email to