gpt4 book ai didi

c++ - 重新分配后删除 C++ 中的数组指针是否安全?

转载 作者:太空宇宙 更新时间:2023-11-04 15:12:00 24 4
gpt4 key购买 nike

假设我想在 C++ 中交换两个数组指针,我用 new [] 分配了不同的长度。交换后 delete [] 它们安全吗?如果它们的长度相同怎么办?

int *a;
int *b;
int *tmp;

a = new int[5];
b = new int[10];
tmp = a;
a = b;
b = tmp;

delete [] a;
delete [] b;

最佳答案

是的,你可以。原因是准确释放内存所需的信息由空闲存储(大多数情况下为堆)管理。所以它知道如何根据地址而不是变量进行删除。通常此信息保存在 *(ptr - x) 中,其中 x 是跟踪数据的大小。

关于c++ - 重新分配后删除 C++ 中的数组指针是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com