首页 > 后端开发 > C++ > 正文

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

Barbara Streisand
发布: 2024-11-17 09:07:03
原创
747 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板