delete和delete []的疑问

youjun610789338 youjun610789338 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

new和delete是一对
new[]和delete[]是一对
两者一定要成双成对出现,否则会出错

考虑以下一个问题:
class CMy {

public:
CMy(char* pc) : m_p(pc) {}
~CMy() {
// 释放m_p指向的资源
// delete m_p; or delete []m_p; -- 这里到底用哪个delete合适呢?
}

private:
char* m_p;
};

int main() {
char* pc1 = new char('1');
CMy c1(pc1);

char* pc2 = new char[10];
CMy c2(pc2);

return 0;
}


疑问1:析构函数在释放资源时怎么知道m_p指向的是单个对象还是对象数组呢?
疑问2:如果不知道,那么到底用delete还是用delete []呢???
...全文
评论 8
收藏 已收藏
分享
返回顶部
youjun610789338
C++ 语言 65,214 成员 250,514 内容