如何检索智能指针数组的大小? (例如 std::unique_ptr<int[]>)

How can I retrieve the size of a smart pointer array? (e..g std::unique_ptr<int[]>)

堆分配的 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]);

当这个智能指针超出范围时,它可能会释放拥有的内存块,因此它必须在某处存储内存块的大小

假设 val 是一个运行时变量,我如何在上面的示例中检索分配在 arr 上的 c 数组的大小?

对于 new[]/delete[]malloc/free,大小确实存储在某处,但没有标准化的方式来访问该信息。