个人认为楼上的不懂C语言堆栈到底是怎么回事,按楼上说法,只是大概讲了下栈,没有讲堆.
要讲C语言的堆栈,要从计算机的数据内存分配讲起.
____________________
| Stack区(数组,指针,结构体,局部变量)
____________________
| Static变量(静态变量,全局变量)
____________________
| Heep区(堆区)
____________________
| 代码段
____________________
从上面示意图中可看出整个内存分配,堆分配是在内存中按块划分,也就是相对与函数malloc,realloc,calloc.这3个函数为内存分配函数.而且需要手动调用free函数释放资源,否则会造成大量的内存碎片.
如果楼主不相信可以自己写一个死循环,内部调用malloc函数,创建N个内存块,运行一段时间后,绝对会造成系统瘫痪,资源被耗尽.
栈区划分为计算机自身划分,即在函数或局部变量被调用时,系统自动为其分配栈,以后进先出为原则实现变量的保存,在函数调用完毕时,系统会自动释放栈内资源,所以,栈可以说是短命的(生存周期只在调用过程中).
这里只是粗略说了下堆和栈,另外再说下static-->静态区,全局变量或静态变量存放于静态区,只要代码中存在静态变量或全局变量,自动放于静态区,静态区存放的变量生存周期是整个程序结束时才释放.
代码段区,顾名思义存放的是程序代码(暂时先这么理解).
原文地址:http://zhidao.baidu.com/question/22906947.html
分享到:
相关推荐
浅谈C语言数据与内存分配空间和地址的联系
C语言动态内存分配研究及应用.pdf
C语言各数据类型内存分配精讲,深入剖析各数据类型的内存分配
C语言 动态内存分配详解 动态内存分配涉及到堆栈的概念:堆栈是两种数据结构。堆栈都是数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。 栈(操作系统):由操作系统自动分配释放 ,...
用C语言模拟内存分区分配管理的最佳适应算法.pdf
内存管理,c语言,编程实现;...具体包括:首先确定分配内存块管理的数据结构、空闲块的数据结构,然后完成内存分配、内存回收、空闲块管理等程序代码;最后编写模拟分配和回收过程的主函数,上机实验并取得结果数据。
实现首次适应算法的内存分配函数alloc_mem(int len),其中的参数为所申请的内存空间的长度,函数返回值为所分配到的内存空间的起始地址,分配时优先将空闲区的低端部分分配出去,如果空闲区较大,则留下的高端部分仍...
在进行内存分配时,系统优先使用空闲区低端的空间。 (2) 假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: 作业1申请130KB。 作业2申请60KB。 作业3申请100KB。 作业2释放60KB。 作业...
不明白内存分配和指针的可以看看,其实这本是我们老师留的一个操作系统科技小论文作业,不知道写什么,干脆...(记得都是csdn里面找的) <br>tag: 操作系统 论文 内存分配 内存对齐 c语言内存分配 免费论文下载.doc
接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据。那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变量的呢?
操作系统可变分区存储管理方式的内存分配和回收,可变分区调度算法有:最先适应分配算法,最优适应分配算法,最坏适应算法 用户提出内存空间的申请;系统根据申请者的要求,按照一定的分配策略分析内存空间的使用情况,...
通过文件中的mm.h文件,编写c程序时,把mm.h文件包含在头文件中,就可以调用里面的提供的函数,建立内存缓冲区,并可以通过mm.h中实现的函数对这个内存缓冲区进行动态的分配内存。
本课件首先介绍了C语言中的内存管理知识,包括堆栈概念、动态内存分配函数及内存泄漏等问题,并给出了示例代码。然后详细讲解了C语言中的结构体与联合的定义、访问及嵌套使用,每部分都配有代码实例说明。内容结构清晰,...
要求实现:页表的数据结构、分页式内存空间的分配及回收(建议采用位图法)、地址重定位、页面置换算法(从FIFO,LRU,NRU中任选一种)。 提示:可先用动态申请的方式申请一大块空间,然后假设该空间为内存区域,对该...
1. 动态内存分配的意义 (1)C 语言中的一切操作都是基于内存的。 (2)变量和数组都是内存的别名。 ①内存分配由编译器在编译期间决定 ②定义数组的时候必须指定数组长度 ③数组长度是在编译期就必须确定的 (3)...
malloc() 函数用来动态地分配内存空间(如果你不了解动态内存分配,请查看:C语言动态内存分配及变量存储类别),其原型为: void* malloc (size_t size); 【参数说明】size 为需要分配的内存空间的大小,以字节...
该管理系统 用纯C语言加链表实现 可模拟系统的内存分配 与回收 代码耦合性自认为可以
20. C语言动态内存分配 21. C语言柔性数组 应用: 22. C语言动态通讯录改造 文件操作相关的知识: 23. C语言文件操作 应用: 24. C语言文件改造通讯录 最后: 25. C语言程序环境 26. C语言预处理
使用C语言实现内存的动态分配与释放的模拟
C语言数据类型.变量代表一个有名字的、具有特定属性的储存单元。用它来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。变量必须先定义,后使用。在定义变量是要定义变量的名称和它的类型。在...