ACE Tutorial 010
Passing chunks of data through an ACE_Message_Queue

Our Block object is a very simple derivative of the ACE_Message_Block. The only reason I created it was to prove that the message blocks to, indeed, get freed when we're done with 'em.

    // $Id: page03.html,v 1.8 1999/04/03 21:56:27 jcej Exp $

    #ifndef BLOCK_H
    #define BLOCK_H

    #include "ace/Message_Block.h"

    #if !defined (ACE_LACKS_PRAGMA_ONCE)
    # pragma once
    #endif /* ACE_LACKS_PRAGMA_ONCE */

    /* This simple ACE_Message_Block derivative will inform us of it's
       construction and destruction.  We'll use this to assure ourselves
       that we don't have any memory leaks.  In a real application, of
       course, this isn't necessary.  */
    class Block : public ACE_Message_Block
    {
    public:
      Block (void)
      {
        ACE_DEBUG ((LM_DEBUG,
                    "(%P|%t) Block ctor 0x%x\n",
                    (void *) this));
      }

      Block (size_t size)
        : ACE_Message_Block (size)
      {
        ACE_DEBUG ((LM_DEBUG,
                    "(%P|%t) Block ctor 0x%x\n",
                    (void *) this));
      }

      virtual ~Block (void)
      {
        ACE_DEBUG ((LM_DEBUG,
                    "(%P|%t) Block dtor 0x%x\n",
                    (void *) this));
      }
    };

    #endif /* BLOCK_H */

Ok, nothing really magic there. Some folks just feel a little uncomfortable not doing an explicit delete on objects they've new'd so I wanted to show you that the memory really does get cleaned up.

[Tutorial Index] [Continue This Tutorial]