内存分配方式
内存分配方式有三种:
(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的
整个运行期间都存在。例如全局变量,static 变量。
注释:这和操作系统中讲到的静态地址重定位一样,它要求代码在编译开始前就要准备
给出具体的地址空间。
(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函
数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效
率很高,但是分配的内存容量有限。
注释:在栈(stack)上操作由操作系统来实现和完成,程序在执行完成时,由操作系统
去收回给程序分配的空间
(3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多
少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由我们
决定,使用非常灵活,但问题也最多。
注释:这是我们经常犯错误的地方,可能由于忘记用free 或delete 释放内存以致造成
内存泄露,最后可能导致操作系统由于内存空间不够而出现问题。建议看一下IBM公司
关于这部分的详细讲解。
阅读(1576) | 评论(1) | 转发(0) |