kcp
kcp copied to clipboard
test.h里数组指针释放有错误,应该修改为delete []_ptr;
virtual ~DelayPacket() {
if (_ptr) delete _ptr;
_ptr = NULL;
}
_prt是指向数组的指针,应该修改为delete []_ptr;
里面存储的是原始类型,可以不加 [],不需要批量调用析构函数。
C++ Primer书上讲的是只要申请的是数组类型,就必须加[]进行释放,否则会导致行为异常。我在项目里引用了这段代码,valgrind工具报出这段代码里存在内存泄漏。_prt指向的是数组,没有听说过数组里面存储的是原始类型,就可以不加[],请问你这句话的出处在哪呢?
书上教了 1+1=2,没教 1+2=3 而已,只要你理解 delete x, delete []x 的实现原理,这就是常识。
还是用delete[]比较好吧,毕竟是C++标准要求的,遵守标准总没有坏处~