[英]How can I retrieve the size of a smart pointer array? (e..g std::unique_ptr<int[]>)
堆分配的c数组不保留任何大小信息,如下所示:
但是,c ++ 11中的智能指针可以使用下标( []
)运算符重载来存储内存并管理具有数组版本的c数组:
std::unique_ptr<int[]> arr(new int[val]);
当此智能指针超出范围时,可能会重新分配所拥有的内存块,因此它必须将内存块的大小存储在某个位置。
假设val
是运行时变量,如何在上述示例中检索在arr
上分配的c数组的大小?
使用new[]
/ delete[]
和malloc
/ free
,大小确实存储在某个地方,但是没有标准化的方式来访问该信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.