keywords:new

C++ Reference

new

Syntax:

    pointer = new type;
    pointer = new type( initializer );
    pointer = new type[size];
    pointer = new( arg-list ) type...

The new operator (valid only in C++) allocates a new chunk of memory to hold a variable of type type and returns a pointer to that memory. An optional initializer can be used to initialize the memory. Allocating arrays can be accomplished by providing a size parameter in brackets. The optional arg-list parameter can be used with any of the other formats to pass a variable number of arguments to an overloaded version of new(). For example, the following code shows how the new() function can be overloaded for a class and then passed arbitrary arguments:

    class Base {
    public:
      Base() { }
 
      void *operator new( unsigned int size, string str ) {
        cout << "Logging an allocation of " << size << " bytes for new object'" << str << "'" << endl;
        return malloc( size );
      }
 
      int var;
      double var2;
    };
 
    ...
 
    Base* b = new ("Base instance 1") Base;

If an int is 4 bytes and a double is 8 bytes, the above code generates the following output when run:

    Logging an allocation of 12 bytes for new object 'Base instance 1'

Related Topics: delete, free, malloc