静态内存分配

简介: 【10月更文挑战第10天】

静态内存分配是在程序编译时就已经确定了内存需求,并且在程序开始执行之前由系统分配好所需内存的一种方式。这种内存分配通常发生在全局变量、静态变量以及函数的局部变量(如果它们被声明为静态)中。

静态内存分配的特点包括:

  • 固定性:一旦分配,其大小在程序运行期间不会改变。
  • 生存期:通常与整个程序或直到程序结束有关。
  • 初始化:静态分配的变量可以在编译时进行初始化。
  • 位置:这些变量通常位于数据段或者BSS段(未初始化的数据)中。

对于C或C++这样的语言来说,静态内存分配的例子如下:

#include <stdio.h>

// 静态数组
static int arr[5] = {
   1, 2, 3, 4, 5};

int main() {
   
    // 静态局部变量
    static int counter = 0;

    // 全局静态变量
    static int globalStaticVar = 20;

    // 使用静态变量
    counter++;
    printf("Counter: %d\n", counter);
    printf("Global Static Var: %d\n", globalStaticVar);

    return 0;
}

在这个例子中,arr 是一个静态数组,在全局作用域中定义,并且在整个程序运行期间都存在。counter 是一个静态局部变量,它只在 main() 函数内部可见,但是它的值会在每次调用 main() 函数之后保留下来。globalStaticVar 是一个全局静态变量,这意味着它在所有函数之外可访问,并且只会被初始化一次。

静态内存分配的一个优点是效率高,因为内存地址在编译时就已经确定,所以访问速度快。缺点则是缺乏灵活性,一旦分配了内存,就不能在运行时动态调整大小。这可能会导致浪费内存(如果分配得过多),或者在需要更多内存时无法获得(如果分配得过少)。

目录
相关文章
|
6月前
|
存储 算法 安全
【JVM】深入理解JVM对象内存分配方式
【JVM】深入理解JVM对象内存分配方式
90 0
|
存储 编译器 C语言
深入理解C++内存管理:指针、引用和内存分配(下)
深入理解C++内存管理:指针、引用和内存分配
|
6月前
|
存储 前端开发 安全
JVM内部世界(内存划分,类加载,垃圾回收)(上)
JVM内部世界(内存划分,类加载,垃圾回收)
80 0
|
存储 编译器 C++
【C/C++】 静态内存分配与动态内存分配
C/C++ 中静态内存分配与动态内存分配相关内容,区别与比较
337 0
|
6月前
|
存储 缓存 算法
深入理解JVM - 对象分配内存
深入理解JVM - 对象分配内存
67 1
|
6月前
|
存储 Java
JVM(四):对象的内存布局
JVM(四):对象的内存布局
|
存储 Java 编译器
深入理解C++内存管理:指针、引用和内存分配(上)
深入理解C++内存管理:指针、引用和内存分配
|
存储 Java
JVM之对象的内存布局
JVM之对象的内存布局
133 0
9-FreeRTOS之静态内存分配与动态内存分配
9-FreeRTOS之静态内存分配与动态内存分配
|
存储 缓存 算法
<JVM上篇:内存与垃圾回收篇>08-对象实例化及直接内存
<JVM上篇:内存与垃圾回收篇>08-对象实例化及直接内存
<JVM上篇:内存与垃圾回收篇>08-对象实例化及直接内存