How to get size of dynamic array in C++ [duplicate]

You can’t. The size of an array allocated with new[] is not stored in any way in which it can be accessed. Note that the return type of new [] is not an array – it is a pointer (pointing to the array’s first element). So if you need to know a dynamic array’s length, you have to store it separately.

Of course, the proper way of doing this is avoiding new[] and using a std::vector instead, which stores the length for you and is exception-safe to boot.

Here is what your code would look like using std::vector instead of new[]:

size_t n;        // Size needed for array - size_t is the proper type for that
cin >> n;        // Read in the size
std::vector<int> a(n, 0);  // Create vector of n elements initialised to 0
. . .  // Use a as a normal array
// Its size can be obtained by a.size()
// If you need access to the underlying array (for C APIs, for example), use a.data()

// Note: no need to deallocate anything manually here

Leave a Comment