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学会网 php培训网 PHP暑期培训 PHP寒假培训 PHP假期培训 » PHP中高级

时:11-23 19:59 Copyright © 2006 phpwhy.com 权
ICP05060669

曳息 -