devxlogo

Zero Sized Arrays?

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];  }
See also  Why ChatGPT Is So Important Today
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist