This question was inspired by a similar question: How does delete[] “know” the size of the operand array?
My question is a little different: Is there any way to determine the size of a C++ array programmatically? And if not, why? Every function I've seen that takes an array also requires an integer parameter to give it the size. But as the linked question pointed out, delete[]
must know the size of the memory to be deallocated.
Consider this C++ code:
int* arr = new int[256];
printf("Size of arr: %d\n", sizeof(arr));
This prints "Size of arr: 4
", which is just the size of the pointer. It would be nice to have some function which prints 256, but I don't think one exists in C++. (Again, part of the question is why it doesn't exist.)
Clarification: I know that if I declared the array on the stack instead of the heap (i.e. "int arr[256];
") that the sizeof
operator would return 1024 (array length * sizeof(int)).