这个问题的灵感来自一个类似的问题:delete[] 如何“知道”操作数数组的大小?
我的问题有点不同: 有没有办法以编程方式确定 C++ 数组的大小?如果不是,为什么? 我见过的每个接受数组的函数也需要一个整数参数来给它大小。但是正如链接的问题所指出的那样,delete[]
必须知道要释放的内存的大小。
考虑这个 C++ 代码:
int* arr = new int[256];
printf("Size of arr: %d\n", sizeof(arr));
这将打印“ Size of arr: 4
”,这只是指针的大小。有一些打印 256 的函数会很好,但我认为 C++ 中不存在这样的函数。(同样,问题的一部分是为什么它不存在。)
澄清:我知道如果我在堆栈而不是堆上声明数组(即“ int arr[256];
”),则sizeof
运算符将返回 1024(数组长度 * sizeof(int))。