Delete[] 和数组检测
在 C 中,delete[] 用于删除使用 new[] 分配的数组。但是,系统如何知道指针指向数组?
编译器和操作系统
虽然最初的问题表明语言或编译器不知道指针的类型,实际情况更加微妙。编译器不知道指针是数组还是单元素指针。但是,操作系统 (OS) 可以跟踪使用 new 进行的分配类型。
内存管理
当使用 new[] 分配数组时,内存不仅分配给数组元素,还分配给包含数组大小的元数据。该元数据存储在数组元素之前的标头中。当使用delete[]时,操作系统检查此标头以确定数组大小。
单个元素与数组
分配单个元素的情况使用 new (如 int* num = new int(1);),不会添加任何元数据。因此,当deleteForMe(num);时被调用时,操作系统仅删除一个 int。
以上是`delete[]` 如何知道它要删除的数组的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!