首页 >后端开发 >C++ >处理指针时,'delete[]”如何知道数组的大小?

处理指针时,'delete[]”如何知道数组的大小?

DDD
DDD原创
2024-11-17 22:25:02755浏览

How Does `delete[]` Know the Size of an Array When Dealing with Pointers?

delete[] 如何区分数组和其他指针?

在 C 中,delete[] 运算符会释放为数组分配的内存,但是它如何知道指针何时是数组?

编译器注意事项

尽管您提供的代码存在不确定性,但编译器无法确定指针是指向数组还是单个元素。

托管数组信息

动态分配的数组存储除指向第一个元素的指针之外的附加信息。此信息包括数组中元素的数量。

Delete[] 操作

当在数组指针上使用 delete[] 时,它使用附加信息:

  • 识别分配是一个数组。
  • 解除分配适当的元素数量。

替代“删除”语法

有些人质疑是否需要单独的 delete[] 语法,因为运行时库已经管理数组大小信息。然而,C 的最初设计原则是通过避免为非数组内存块分配额外的空间来最大程度地减少非数组用户的开销。

Delete[] Specificity

因此,delete[] 用于显式通知运行时库分配的内存是一个数组,以便它们能够正确地释放它。虽然这在现代计算中似乎有些过分,但在内存优化至关重要的场景中它仍然是有益的。

以上是处理指针时,'delete[]”如何知道数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn