关于c++中new / delete 一个不可饶恕的错误

本文详细解释了在C++中使用new和delete进行内存分配和释放时的常见错误,提供了正确的实现方式,并强调了初始化和类型安全的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天晚上躺下想起了用new运算符在堆上分配了空间以后释放的问题。

最近的笔记里用到不少new分配的地方,比如char* ch = new char[100]之类。在释放空间的时候我用的是delete ch;  ch = NULL;

可是delete [] p; 这种写法是在什么时候呢? 

今天看了看书,才知道真的错了

///////////////////正确的写法//////////////////////////////////////////////////

char* ch = new char[100];

//memset(ch, '\0', sizeof(char) * 100);

//codes

delete [] ch;

ch = NULL;

///////////////////正确的写法//////////////////////////////////////////////////

char* ch = new  char('c'); //分配一个char型大小的空间并且初始化值为'c'

//codes

delete ch;

ch = NULL;

///////////////////正确的写法//////////////////////////////////////////////////

int* pNum = new int;

//codes

delete pNum;

pNum = NULL;

 

NOTE: 一定要牢记!

 

 

关于c++中new / delete 一个不可饶恕的错误 - 大灰狼 - 大灰狼 的博客

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值