dcsimg
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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning


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