如何解决在作为参数传递的数组上使用delete []
因此,假设您想在C ++中创建一个realloc函数。我想它可以像这样工作:
template<typename T>
void realloc(T** arr,int size,int original_size){
T *newArr = new T[size];
for(int i = 0; i<original_size;i++)
newArr[i] = (*arr)[i];
delete[] *arr;
*arr = newArr;
}
现在我的问题是在这里使用delete[]
是否正确?据我所知,在运行时会跟踪分配的内存大小,因此C ++知道要删除多少内存。这样传递时是否保留了该标记?还是有更好的方法?
解决方法
现在我的问题是在这里使用delete []是正确的吗?
是的,只要使用*arr
分配了new[]
。
据我所知,在运行时会跟踪分配的内存大小,因此C ++知道要删除多少内存。这样通过[...]时会保留吗?
我不太确定你在这里的意思。运行时跟踪内存分配,是的。但是您必须明确地将delete[]
用于数组(例如new int[10])
和delete
用于非数组(例如new MyClass()
)。
或者有更好的方法吗?
应该避免使用原始指针,即使是裸new
如今也被认为是不良做法。几乎每种情况下,std::vector
之类的智能指针和STL容器都是绝佳的选择。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。