课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
内存管理与分配是每一位软件开发程序员在学习计算机编程开发技术的时候需要重点掌握的一个编程知识点,下面我们就通过案例分析来简单了解一下,软件开发内存分配方法分享。
(1)从静态存储区域分配
这部分内存在程序编译的时候就已经分配好,并且这块内存在程序的整个运行期间都存在。例如在函数外定义的全局变量,以及在创建时使用static修饰符的变量。在该区域存储的内容一般是全局变量,其中存储在数据段中的全局变量通常已经被初始化。
(2)在栈上进行内存分配
这部分区域被称为堆栈,但这只是一种习惯性说法,并不是堆和栈的统称。该部分存储的变量一般是在函数体中定义的局部变量(不包括static声明的变量,static意味着变量存放在数据段中),除此之外,经常在栈区出现的还有传递给函数的参数和函数的返回值等。栈区变量的生存周期是在入栈前(函数开始被调用)获得内存空间,而在出栈时(函数结束调用)释放内存空间。因此尽量不要将函数中的局部变量作为函数的返回值,因为在函数调用结束后,局部变量就不存在了,再使用此变量的值作为返回值,会使程序获取的返回值有可能为随机数。在执行函数时,函数体内的局部变量在栈上被自动创建,而在函数执行结束时,这些存储单元自动被释放。栈内存分配由操作系统完成而不需要程序员手动参与。因此其执行效率非常高。但是整个栈区可以被分配的内存容量有限。因此定义过多的未使用的局部变量会使程序执行变慢。
(3)从堆上分配
通常称为动态分配的内存,该部分内存区域的大小并不固定,当程序运行时有程序员用malloc()函数等内存分配函数来分配,或使用new操作符等系统提供的函数来分配。该内存的大小可以根据程序中的实际需要来指定。该部分内存空间不会随着函数运行的结束而被自动回收,也不会被自动释放,需要程序员自己用free()函数或delete操作符进行内存的回收。动态内存的生存期由程序员自行决定,但如果分配了空间,就必须对其回收,否则运行的程序会出现内存泄漏,并且频繁地分配和释放不同大小的堆空间将会产生堆内碎块,间接降低内存空间的使用率,严重时会产生大量内存碎片。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。