内存分配器如何知道Delete[]的数组大小
在 C 中,delete[] 运算符用于释放数组记忆中的物体。然而,与明确需要数组大小的 new[] 运算符不同,delete[] 似乎在没有此信息的情况下进行操作。它如何确定数组的大小?
当您使用 new[] 在堆上分配内存时,内存分配器会为数组元素分配连续的内存块,并存储有关分配的附加信息,包括它的大小。此信息通常存储在紧邻已分配内存之前的标头中。
标准化
使用分配的内存存储数组大小的方法在 C 本身中并未标准化。不同的内存分配器实现不同的技术:
检索数组大小
删除期间,delete[]从关联的标头或内存分配器中检索数组大小。通过知道大小,delete[] 可以有效地释放整个对象数组。
结论
综上所述,new[] 分配的内存携带了其相关信息大小,通过堆元数据、内存标头或指针值。 delete[] 运算符使用此信息来确定释放期间的数组大小,从而实现高效的内存管理,而无需显式提供大小。
以上是`delete[]` 如何知道它正在释放的数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!