aer*_*son 5 c++ memory allocation new-operator delete-operator
int* Array;
Array = new int[10];
delete[] Array;
Run Code Online (Sandbox Code Playgroud)
该delete懂得分配内存的次数.我用Google搜索它将它存储在内存中,但它依赖于编译器.无论如何使用得到这个计数?
小智 1
此类分配中的元素数量可能有一两个计数,具体取决于您正在使用的类型和实现,尽管您无法真正按照您可能想要的方式访问它们。
第一个是您正在使用的实际内存管理器(提供 malloc 的库)存储的记帐信息。它将存储已在系统的空闲存储中分配的某个大小的记录(例如,使用 glibc malloc 可以进行堆或匿名内存分配)。该空间至少与您尝试存储的数据一样大(sizeof(int)*count+delta,其中 delta 是我在下面讨论的 C++ 编译器的跟踪信息),但它也可能更大,甚至更大。
第二个计数是编译器保存的一个值,它告诉它如何对数组中的所有元素调用析构函数(RAII 的全部魔力),但该值不可访问,甚至可以在不直接存储信息的情况下完成,尽管那不太可能。
正如其他人所说,如果您需要跟踪有关分配大小的信息,您可能想要使用向量,您甚至可以将其用作实际数组,以用于指针数学(如果需要)(请参阅http://www.cplusplus .com/reference/stl/vector/了解更多信息)。