考试网 >> IT认证 >> 等级 >> 四级考试 >> 计算机等级考试四级上机编程修养(下)

计算机等级考试四级上机编程修养(下)

发布时间:2006-06-27 09:59     点击:
分页:上一页  1 2 [3] 4 5 6 7  下一页

于是,系统的可分配内存会随malloc越来越少,直到系统崩溃。还是来看看“栈内存”和 

“堆内存”的差别吧。 

  

    栈内存分配 

    ————— 

    char* 

    AllocStrFromStack() 

    { 

        char pstr[100]; 

        return pstr; 

    } 

  

  

    堆内存分配 

    ————— 

    char* 

    AllocStrFromHeap(int len) 

    { 

        char *pstr; 

  

        if ( len <= 0 ) return NULL; 

        return ( char* ) malloc( len ); 

    } 

对于第一个函数,那块pstr的内存在函数返回时就被系统释放了。于是所返回的char*什么也没有。而对于第二个函数,是从堆上分配内存,所以哪怕是程序退出时,也不释放,所以第二个函数的返回的内存没有问题,可以被使用。但一定要调用free释放,不然就是Memory Leak! 

  

在堆上分配内存很容易造成内存泄漏,这是C/C++的最大的“克星”,如果你的程序要稳定,那么就不要出现Memory Leak。所以,我还是要在这里千叮咛万嘱付,在使用malloc系统函数(包括calloc,realloc)时千万要小心。 

  

  

我保证,做过许多C/C++的工程的程序员,都会对malloc或是new有些感冒。当你什么时候在使用malloc和new时,有一种轻度的紧张和惶恐的感觉时,你就具备了这方面的修养了。 
分页:上一页  1 2 [3] 4 5 6 7  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有