当前位置:首页 > 内存 > 正文

全局变量的内存释放

  • 内存
  • 2024-06-11 22:04:00
  • 898

一、C语言中全局变量存放在内存空间中那个位置在C语言中,内存分配方式有以下三种形式:
1.从静态存储区分配
由编译器自动分配和释放,在程序编译时分配内存,该内存在程序执行过程中一直存在,只有在整个程序结束时才释放,如全局变量和静态变量。
2.栈上分配
也是由编译器自动分配和释放的,函数执行时,可以在栈上创建函数内部的局部变量。当函数执行结束时,这些存储单元将被自动释放。
需要注意的是,堆栈内存分配操作内置于处理器的指令集中。其运行效率一般很高,但分配的内存容量有限。
3.从堆分配
也叫动态内存分配,申请和版本由程序员手动完成。程序运行时,程序员使用内存分配函数(如malloc函数)来申请内存。使用完毕后,程序员负责使用内存释放函数(如free函数)释放内存。
值得注意的是,如果在堆上分配了内存空间,一定要及时释放,否则会导致当前程序执行时出现内存泄漏等错误。
在C语言中,不同类型的变量的存储位置和作用域也不同。
全局变量
从静态存储区分配,其作用域为全局范围,即在程序的整个生命周期中都可以使用。如果程序由多个源文件组成,则只要在一个文件中定义全局变量,就可以在所有其他文件中使用全局变量,但必须使用external关键字在其他文件中声明全局变量
全局静态变量
从静态存储区分配,其生命周期也延伸到整个程序,从程序开始一直工作到程序结束。与全局变量不同,全局静态变量的作用域仅在定义它们的源文件内,不能被其他源文件使用。
局部变量
从堆栈中分配,其作用域仅在局部函数内。在设置变量的函数中,只要函数完成,局部变量就不会了。不再有任何影响。即变量和函数的生命周期是相同的。
局部静态变量
从静态存储区域分配,在第一次初始化后一直存在,直到程序终止。该变量的特殊性在于其作用域仅在定义它的函数内可见,在函数外不可见。


二、VBA中如何释放全局变量占用的内存自由数组名称[下标]
如果创建一个新的可以用上面的方法。
是的,你使用eraser(橡皮擦?)命令来清除数组并释放内存。