堆分配的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]);当这个智能指针超出作用域时,它大概会释放所拥有的内存块,因此它必须将内存块的大小存储在某个地方。
假设arr是运行时变量,那么如何检索上面示例中分配给val的c数组的大小?
发布于 2015-02-25 22:41:43
使用new[]/delete[]和malloc/free,大小确实存储在某个地方,但是没有标准的方法来访问这些信息。
https://stackoverflow.com/questions/28731017
复制相似问题