我靠
空间那章你没学过呀!!!!!!!!!
一个是随意的!!!!!!!
一个是静态空间!!!!!!!!!!!!
后者申请了要语句释放!!!!!!!!!!
前者在执行时自动申请和释放!!!!!!!!!!!!
内存分配一般有三种。
第一是静态内存分配,在编写程序时,使用 static 修饰符声明某变量为静态变量,并且应该为其赋缺省值;
静态内存的分配在编译时便已确定下来,而且是编译器自动分配。
除了寄存器(现在几乎不用)及静态声明外,其余的局部变量(全局变量是静态声明的)默认为动态(auto)声明。
第二种是栈内存的分配,C语言调用函数时(C是函数式的语言)为当前的函数调用分配栈内存,维护当前的函数调用的局部变量(参数属于局部变量的一个范畴),这也是编译器为程序赋予的一个功能,我们无须手动干预。
第三种是堆内存,由我们在需要时手动分配(使用 malloc() 函数),并且必须手动释放(使用 free() 函数)。堆内存的生命周期不随函数作用域等限制,并且即使整个程序已退出执行,因为这块内存受管理于操作系统。所以,必须在该内存不再使用时使用 free() 释放这块空间。
[此贴子已经被作者于2006-11-21 13:45:23编辑过]
哥们听老师讲课然后加自己的理解:
auto 变量 :自动存储类 一般不表明什么类的就属于这一类
自动变量申明后在内存开一空间,使用完后次空间在内存释放掉
下一次再使用此变量时 内存从新开辟空间
static变量 :静态变量 声明后除非初始化除0以外的值 否则默认初始化为0
静态变量在内存只开一次空间 直到程序结束才会释放掉因此生命周期比较长
下一次再使用此变量时 存在一个值为上次使用后的值
还有寄存器变量,一般为使用频繁的变量,存在离cpu较近的寄存器。名字也因此得来,好象是这样的,老师讲过
汗..还有全局变量,全局静态变量...不说这个咯