堆分配的c数组不保留任何大小信息,如下所示:
How can i find the size of a dynamically allocated array in C?
但是,c ++ 11中的智能指针能够使用下标([]
)运算符重载来存储内存并使用数组版本管理c数组:
std::unique_ptr<int[]> arr(new int[val]);
当这个智能指针超出范围时,它可能会释放所拥有的内存块,因此它必须在某处存储内存块的 size 。
如果假设arr
是运行时变量,我如何检索上例中val
上分配的c数组的大小?
答案 0 :(得分:3)
同时new[]
/ delete[]
和malloc
/ free
,大小确实存储在某处,但没有标准化的方法来访问该信息。