C语言的变数有三种记忆体管理模式:

  1. Automatic 记忆体管理模式: 变数的生命期间是从第一次宣告开始被自动配置记忆体,当生命期间结束,记忆体即被移除。一般变数宣告皆属Automatic变数。
  2. Static 记忆体管理模式: 变数资料在main程式执行之前便已经被初始化,未被指定初始化的Static变数会被自动指定为0或NULL,一般变数加上Static宣告即属于此种记忆体管理模式。

EX: static int x;

  1. 自行管理记忆体模式: 透过malloc()函式配置并需要用free()释放的变数,是唯一能让C语言自由改变宣告阵列大小的模式。

 

  C语言变数可以是与档案外的变数连结,也可以仅与档案内部连结,我们称这是C语言变数的外部连结与内部连结。一般可以透过extern(外部连结)static(内部连结)让C语言变数(或函式)决定其在档案间的可见范围。

 

  在此同样分三部份讨论:

 

  1. 生存空间是档案的变数(全域变数): 预设是外部连结,加上static之后可将变数限制在档案内成内部连结变数。 档案变数的记忆体管理方式则都是static 管理模式
  1. 生存空间在区块内的变数(区域变数): 预设是内部连结,可以透过extern转变为外部连结变数,但不建议这么做。 区域变数记忆体模式是automatic模式,但加上static会转变为static模式。
  1. 档案函式: 函式在连结方式与记忆体模式上都与全域变数属于同类,预设都是外部连结方式,也就是其他档案都可视,同样必须透过static才能转为内部连结。记忆体管理模式同样是static类。

 

2018年7月15日星期日

相关文章