| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 212 人关注过本帖
标题:关于C语言内存管理分配等若干问题的总结(帮忙看看总结的对不对)
只看楼主 加入收藏
suishuhao
Rank: 2
等 级:论坛游民
帖 子:89
专家分:10
注 册:2012-9-25
结帖率:61.9%
收藏
 问题点数:0 回复次数:2 
关于C语言内存管理分配等若干问题的总结(帮忙看看总结的对不对)
查了些网络资料,总结一下,
大家看看我总结的对不对啊???

C程序有5个区域:
stack area(栈区),  heap area(堆区),  data area(数据区), code area(代码区),文字常量区。

从源代码到可执行程序,需要经过预编译、编译、链接、运行四个阶段。
1:编译阶段:
一个程序经过编译后,就产生了上述5个区域,(对吗?是在编译后就产生5个区域吗?)
如果程序中有全局变量或静态局部变量,则编译阶段会给全局变量或者静态局部变量在数据区分配固定的内存并赋值。
此时,栈区、堆区也已经分配完毕,但是栈区、堆区中没有内容存放(空白的)。
2:程序运行阶段:
程序运行阶段,在函数调用时,会往栈区存放局部变量、函数参数、返回地址等(但是由于栈区是在编译阶段分配的,因此内存的分配属于静态分配)。
在使用malloc()函数时,会向堆区申请内存,使用free()函数时,会释放堆区的内存,因此,堆区的申请和释放由程序员自己控制,
因为堆区的分配和释放由程序员在程序中申请、释放,因此称为动态分配。










搜索更多相关主题的帖子: 源代码 C语言 网络 资料 
2013-02-21 18:28
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:0 
有一点理解有误
程序编译只产生目标文件 跟内存分配没有关系
内存分配是在程序运行时 由操作系统分配的

人生是一场错过 愿你别蹉跎
2013-02-21 19:56
信箱有效
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1102
专家分:4268
注 册:2012-6-19
收藏
得分:0 
走火入魔
2013-02-21 20:09
快速回复:关于C语言内存管理分配等若干问题的总结(帮忙看看总结的对不对)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013383 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved