Posted on 2010-04-07 10:42
rikisand 阅读(490)
评论(1) 编辑 收藏 引用
良好的编程风格是:new和delete 配套使用,即如果使用new [] 则使用delete []
事实上,如果我们使用的是自定义类型int char等,或者我们使用的是没有内存申请的类,我们使用 delete A;并不会发生什么不好的事情。
这是由delete 的语义决定的。当我们是申请一组对象时候,编译器会加入内存大小信息和此段内存相关联。因此当我们delte A 时,编译器会按照内存大小收回分给我们的内存。显然,如果是基本类型或者没有申请内存的情况这样的行为是良好的。但是如果我们在自建类型中申请了内存~对不起,编译器是不知道的,这些申请的内存就是内存泄露,随着程序不断进行,堆不断地被侵蚀·····
这就是delete的第二个作用,他会施加析构函数在我们申请的内存上,如果我们delete A,只会在第一个上施加,而如果delete [] A;他会对数组中每一个元素进行析构~~
so····
试验很容易做,写两个类,一个申请内存,一个普通的类,然后循环申请大量数组,但是用 delete A 形式,然后看看内存占用就行了