无图版
|
左右分栏
» 您尚未
登录
注册
|
搜索
|
朋友圈
|
帮助
社区服务
银行
朋友圈
搜索工具
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训
»
PHP中高级
»
堆和栈的概念 (转载)
交 易
投 票
本页主题:
堆和栈的概念 (转载)
打印
|
加为IE收藏
|
收藏主题
|
上一主题
|
下一主题
自由的龙
级别:
中级程序员
精华:
1
发帖:
1264
威望:
1267 点
金钱:
12660 PYMB
贡献值:
0 点
在线时间:0(小时)
注册时间:2006-04-16
最后登录:2006-06-27
堆和栈的概念 (转载)
去公司面试时经常会有这样的问题,虽然和php开发关系不是很密切,但也是基础知识很重要的一部分。我上次就答了个:“不是很清楚” 晕。。。
一般认为在c中分为这几个存储区:
1. 栈 -- 有编译器自动分配释放
2. 堆 -- 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
3. 全局区(静态区) -- 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 程序结束释放。
4. 另外还有一个专门放常量的地方。 程序结束释放
在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有效,不能extern到别的文件用,在函数体内定义的static表示只在该函数体内有效。另外,函数中的"adgfdf"这样的字符串存放在常量区。
比如:
代码:
int a = 0; //全局初始化区
char *p1; //全局未初始化区
main()
{
int b; //栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //123456
Posted: 2006-04-25 15:05 |
[楼 主]
快速跳至
>> php培训
|- 培训咨询和报名
>> 学员专区
|- 学员交流区
>> 开源项目
|- 项目开发
|- OSC技术交流
|- CMS开源项目研究
|- 下载
>> PHP和web开发
|- 入门和基础知识
|- PHP中高级
|- 网站SEO
|- PHP资源共享
|- YUI,ext JS
|- 数据库应用
|- 操作系统(Windows、Linux)
|- 英语学习
|- 数据结构和算法
|- web2.0
>> 信息发布
|- 招聘和求职
>> 娱乐论坛
|- BT软件&教程发布
|- BT影视&音乐
|- 娱乐乐园
>> PHP世纪
|- 站务管理
PHP学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训
»
PHP中高级
今日推荐
隐藏
显示
关闭
时:11-23 19:59
Copyright © 2006 phpwhy.com 权
ICP05060669
-
系