I’ve been the teaching assistant of the C++ course for a while, but I haven’t realized that C++ keeps the lengths of the dynamically allocated objects at the run time until this week. The array deletion operator delete which calls the destructor of each array element has to know the number of elements in the array. Ooops! Since I always send an array to a function together with its size, I was thinking that the size information is not stored by the runtime library. That was totally wrong. The techniques for storing the size information can be found here.
Now, I started wondering why there is no length(x) function which returns the length of the array x. Since the delete operator is a standard operator, every compiler must know the length of the dynamic arrays at the runtime, and this information can be used to implement length(x).