首页  >  文章  >  后端开发  >  `delete[]` 如何知道它要删除的数组的大小?

`delete[]` 如何知道它要删除的数组的大小?

Barbara Streisand
Barbara Streisand原创
2024-11-17 09:07:03748浏览

How Does `delete[]` Know the Size of the Array It's Deleting?

Delete[] 和数组检测

在 C 中,delete[] 用于删除使用 new[] 分配的数组。但是,系统如何知道指针指向数组?

编译器和操作系统

虽然最初的问题表明语言或编译器不知道指针的类型,实际情况更加微妙。编译器不知道指针是数组还是单元素指针。但是,操作系统 (OS) 可以跟踪使用 new 进行的分配类型。

内存管理

当使用 new[] 分配数组时,内存不仅分配给数组元素,还分配给包含数组大小的元数据。该元数据存储在数组元素之前的标头中。当使用delete[]时,操作系统检查此标头以确定数组大小。

单个元素与数组

分配单个元素的情况使用 new (如 int* num = new int(1);),不会添加任何元数据。因此,当deleteForMe(num);时被调用时,操作系统仅删除一个 int。

以上是`delete[]` 如何知道它要删除的数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

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