吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 485|回复: 6
收起左侧

[经验求助] C++ delete语法问题

[复制链接]
kldxhz 发表于 2024-3-17 16:46
25吾爱币
Worker** Space = new Worker * [newsize]  

m_EmpArray = Space

delete newSpace ,还是delete  m_EmpArray

有大佬能指导一下吗

最佳答案

查看完整内容

如果纠结这个,请阅读smart point,然后阅读一下RAII就好了

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

euris 发表于 2024-3-17 16:46
如果纠结这个,请阅读smart point,然后阅读一下RAII就好了
ccpprust 发表于 2024-3-17 16:55
 楼主| kldxhz 发表于 2024-3-17 17:06
ccpprust 发表于 2024-3-17 16:55
new出来什么就delete什么呀。

我也是这么想的,但是那个案例里面是delete m_EmpArry。所以有点懵
ccpprust 发表于 2024-3-17 17:14
kldxhz 发表于 2024-3-17 17:06
我也是这么想的,但是那个案例里面是delete m_EmpArry。所以有点懵

你自己不是都写出来了嘛:m_EmpArray = Space
aoyu321 发表于 2024-3-17 17:47
Space 指向一个指针数组,因此,delete的话,应该写成
[C++] 纯文本查看 复制代码
delete [] Space;
wfys66 发表于 2024-3-17 18:12
在C++中,如果你使用`new`关键字分配了一个数组,你应该使用`delete[]`来释放它,而不是`delete`。这是因为`delete`用于释放单个对象的内存,而`delete[]`用于释放数组。

在你提供的代码片段中,`Worker** Space = new Worker * [newsize];`这行代码创建了一个指向Worker指针数组的指针,并且使用`new[]`分配了内存。因此,你应该使用`delete[]`来释放这个内存。

正确的释放方式是:

```cpp
delete[] Space;
```

而不是:

```cpp
delete newSpace;
```

或者:

```cpp
delete m_EmpArray;
```

如果`m_EmpArray`是指向Worker指针数组的指针,并且你使用`new[]`分配了内存,那么也应该使用`delete[]`来释放它。如果`m_EmpArray`是指向单个Worker指针的指针,并且你使用`new`分配了内存,那么应该使用`delete`来释放它。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 21:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表