首页 >后端开发 >C++ >`delete[]` 如何知道要从数组中删除多少个元素?

`delete[]` 如何知道要从数组中删除多少个元素?

Susan Sarandon
Susan Sarandon原创
2024-11-27 19:46:11697浏览

How Does `delete[]` Know How Many Elements to Delete from an Array?

delete[] 如何破译数组

有问题的代码:

void deleteForMe(int* pointer)
{
     delete[] pointer;
}

如果指针未指向,则具有未定义的行为一个数组,因为它盲目地执行了delete[]操作。但是,当指针引用数组时,如:

int main()
{
     int* arr = new int[5];
     deleteForMe(arr);
     return 0;
}

操作系统以某种方式知道只删除指定的数组元素,而不继续超出它们。

此行为的关键在于C 作为 C 兼容语言的历史根源。为了避免给不使用数组的程序员带来不必要的开销,引入了delete[]语法。

进行非数组分配时,如:

Foo* foo = new Foo;

没有额外的数组支持会产生开销。然而,对于数组分配,这种开销确实存在。为了指示运行时库应该使用此信息,程序员必须为数组指针指定delete[]。

因此,delete 和delete[] 之间的选择基于要删除的特定分配。这允许更细粒度的内存管理,并符合 C 的极简主义哲学。

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

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