kcp icon indicating copy to clipboard operation
kcp copied to clipboard

test.h里数组指针释放有错误,应该修改为delete []_ptr;

Open chain78 opened this issue 4 years ago • 4 comments

virtual ~DelayPacket() {
	if (_ptr) delete _ptr;
	_ptr = NULL;
}

_prt是指向数组的指针,应该修改为delete []_ptr;

chain78 avatar Jan 06 '20 08:01 chain78

里面存储的是原始类型,可以不加 [],不需要批量调用析构函数。

skywind3000 avatar Jan 06 '20 08:01 skywind3000

C++ Primer书上讲的是只要申请的是数组类型,就必须加[]进行释放,否则会导致行为异常。我在项目里引用了这段代码,valgrind工具报出这段代码里存在内存泄漏。_prt指向的是数组,没有听说过数组里面存储的是原始类型,就可以不加[],请问你这句话的出处在哪呢?

chain78 avatar Jan 08 '20 01:01 chain78

书上教了 1+1=2,没教 1+2=3 而已,只要你理解 delete x, delete []x 的实现原理,这就是常识。

skywind3000 avatar Jan 08 '20 03:01 skywind3000

还是用delete[]比较好吧,毕竟是C++标准要求的,遵守标准总没有坏处~

zhangboyang avatar Apr 21 '20 09:04 zhangboyang