删除[i] 数组和删除数组 [i] 之间的区别
Difference between delete[i] array and delete array[i]
我实际上想先描述一下我的问题。在我的代码中,我有一个名为 Employee 的基类,然后我还有 4 个类。我想让我的类抽象(基本上我使用的是多态概念(。我制作了一个具有基类类型的指针数组,并在其中添加对象(堆上的未命名对象(。现在我想释放对象。我用了delete[i] array
,delete array[i]
两者都在工作(一次一个(。有人可以解释一下它们之间的区别吗?如果错了delete[i]
为什么两者都在工作? 我正在使用带有 for 循环的delete[i] array
或delete array[i]
。
main
就像:
Employee *arr[10];
arr[0] =new SalariedEmployee ("first name","last name","number",200);
现在我想删除这个对象
delete[i] array;
在标准C++中是错误的。但它直接编译在 msvc(演示(上。这是一个特定于编译器的扩展(感谢Heart指出这一点(。
正确的版本是
delete array[i];
销毁在堆上分配的对象并释放相应的内存。
但是,手动内存管理有时会变得非常困难。因此,现代C++的解决方案将是这样的
std::array<std::uniqe_ptr<Employee>, 10> array;
对于带有指向Employee
的指针的固定大小数组。
相关文章:
- 你能帮我解决删除数组 c++ 中重复值的挑战吗?
- 删除[i] 数组和删除数组 [i] 之间的区别
- 如何实现删除数组的功能?
- 删除数组 c++ 崩溃问题
- 如何删除数组列表中的元素
- C++删除数组只会解除分配第一项
- 删除数组成员的更好方法是什么?
- 如何使用 deleteEntry 函数 c++ 删除数组中的单个字符串
- 删除数组中所有出现的数字 C++
- C++ 删除数组时检测到堆损坏
- 不允许删除数组的一部分,为什么
- 如何删除数组中第一次出现的值
- 当我删除数组时,指针在哪里?指向数组的指针与数组中的元素之间的区别
- 尝试用C 中的空地址(而非null)删除数组指针
- 为什么 std::remove 不删除数组的最后一个元素
- 如何使用c++删除数组中的一些值
- 仅删除数组的第一个元素
- 删除数组时断言失败
- 如何并行删除数组中的零值
- 访问指针数组/通过另一个指针并删除数组中的单个元素而不删除第一个指针或整个数组