Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466420
  • 博文数量: 93
  • 博客积分: 5006
  • 博客等级: 上校
  • 技术积分: 1002
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-30 13:58
文章分类

全部博文(93)

文章存档

2012年(2)

2011年(68)

2010年(23)

分类: C/C++

2011-03-24 17:30:07

int *pNew = new int[5];   //以16字节对齐
char *pMalloc = (char*)malloc(1);
(堆里的是以16字节对齐的,所以pNew占用32字节)
在main()函数结束时,pNew 和 pmalloc自身是栈上的内存单元(因为他们是局部变量),会被自动释放的,而他们所指的内存是堆上的,虽然指向他们的指针已经不存在,但它们不会被自动释放,因此如果不对new的对象实施delete,和malloc的对象不free,则会造成内存泄漏。
阅读(1772) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

随1意2o2011-03-26 23:45:07

shell_way: 那个话说姐姐,程序结束后堆貌似会被全部释放,内存泄漏是程序运行的时候申请了大量的内存貌似。堆是个数据结构,有指向的指针,结尾还有一个指针指向返回位置,.....
嗯  明白

shell_way2011-03-26 12:41:12

那个话说姐姐,程序结束后堆貌似会被全部释放,内存泄漏是程序运行的时候申请了大量的内存貌似。堆是个数据结构,有指向的指针,结尾还有一个指针指向返回位置,这也就是堆溢出的原理,不过我好象记得程序结束后虚拟内存管理器会回收程序的一切内存空间,就是说数据仍然在,不过可以被其他的程序读写了。