内存泄露例子


valgrind --tool=memcheck --leak-check=full path




int main()
{
int *p1= new int;
char * p2 = new char[10];

//delete p1; //4 bytes in 1 blocks are definitely lost in loss record 1 of 1
//delete p2; //10 bytes in 1 blocks are definitely lost in loss record 1 of 1
return 0;
}



delete p2 : 错误的释放方式
Mismatched free() / delete / delete []
==14638== at 0x4A05A33: operator delete(void*) (vg_replace_malloc.c:346)
==14638== by 0x40065D: main (test1.cpp:7)
==14638== Address 0x512e090 is 0 bytes inside a block of size 10 alloc'd
==14638== at 0x4A065BA: operator new[](unsigned long) (vg_replace_malloc.c:264)
==14638== by 0x400647: main (test1.cpp:4)



应该为delete []p2

[color=red]使用 new 得来的空间,必须用 delete 来释放;使用 new [] 得来的空间,必须用 delete [] 来释放。彼此之间不能混用。用 new [] 分配出连续空间后,指针变量“指向”该空间的首地址。[/color]

g++ -g test1.cpp -o test
valgrind --tool=memcheck --leak-check=full ./test

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值