如何解决指针数组大小增加-C ++
我正在创建一个Min Heap类(用于实践),并且可以完全正常工作,但是,对我来说,我的指针数组的增加容量函数(该数组持有堆数组)可能会导致内存泄漏。 (不好意思,我的编码)。在下面,我显示了我的函数,构造函数和私有成员init,但是,这并不是在代码中实际构造的方式,只是为了方便编写帖子。
int* heap; // init as a private member
MinHeap() {
this->total_capacity = 10; // init in default constructor
heap = new int[total_capacity];
}
// if total capacity is reached:
// creates a larger array and copies all elements over to it
void ensureExtraCapacity() {
if (length == total_capacity) {
total_capacity *= 2;
int* temp = new int[total_capacity];
for (int i = 0; i < length; i++)
temp[i] = heap[i];
heap = temp;
delete[] temp; // <= this is causing me issues
cout << "Capacity added." << endl;
}
}
- 长度是一个整数,可以跟踪堆中有多少个数字
我试图删除它,但是,它最终要么从新数组中删除了新数字,要么以两个方式添加了两个零,这不好。
with the "delete[] temp" without the "delete[] temp"
2件事:
P.S:对不起,如果重复的话,我环顾四周发誓。
P.S:如果您知道有任何资源可以更好地利用内存处理和指针(甚至是STL库),请也将其链接,谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。