c++ - 重新分配后在 C++ 中删除数组指针是否安全?
问题描述
假设我想在 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 是跟踪数据的大小。
推荐阅读
- osgi - 在 Equinox 中运行 Xtext
- elasticsearch - Elasticsearch - Kubernetes [握手失败,集群名称不匹配]
- prestashop - 如何在 Prestashop 1.6 中以编程方式添加新客户组
- excel - VBA以特定格式将Excel单元格复制到Word
- c - 如何使用 scanf 函数从 ls -l 的结果中解析两个特定信息作为参数?
- javascript - 两步登录 - 第二步的问题
- angular - 我可以在不立即呈现更改的情况下更新 Firestore 文档吗?
- binary-tree - 重建一棵二叉树需要多少树旅行?
- javascript - 我想要输入的值,但它总是警告 0
- arrays - fortran 中的 array(2:)(::2) 有什么问题?