Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: All
Nov 12, 1999

Zero Sized Arrays?

In standard C++, declaring arrays with zero elements is illegal:
         
  int n[0]; //illegal
However, certain compilers do support arrays of zero size as non-standard extension.

In contrast, dynamic allocation of zero sized arrays is valid C++:

         
  int n = new int[0]; 
The standard requires that in this case, new allocate an array with no elements. The pointer returned by new is non-null and it is distinct from a pointer to any other object. Similarly, deleting such a pointer is a legal operation.

While zero-sized dynamic arrays may seem like another C++ trivia that no one may ever need, this feature is chiefly important when implementing custom memory allocators: A custom allocation function may take any non-negative (i.e., unsigned) argument without worrying whether it's zero.

         
  void * allocate_mem(unsigned int size)
  {
    //...no need to check whether size equals zero
    return new char[size];
  }
Danny Kalev
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date