静态内存分配

简介: 【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 是一个全局静态变量,这意味着它在所有函数之外可访问,并且只会被初始化一次。

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

目录
相关文章
|
8月前
|
存储 算法 安全
【JVM】深入理解JVM对象内存分配方式
【JVM】深入理解JVM对象内存分配方式
99 0
|
存储 编译器 C语言
深入理解C++内存管理:指针、引用和内存分配(下)
深入理解C++内存管理:指针、引用和内存分配
|
8月前
|
存储 算法 大数据
内存原理 | 内存分配 | 内存对齐
内存原理 | 内存分配 | 内存对齐
|
7月前
|
存储 缓存 算法
JVM对象创建与内存分配机制
该类对应的java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
53 0
|
存储 编译器 C++
【C/C++】 静态内存分配与动态内存分配
C/C++ 中静态内存分配与动态内存分配相关内容,区别与比较
371 0
|
存储 Java 编译器
深入理解C++内存管理:指针、引用和内存分配(上)
深入理解C++内存管理:指针、引用和内存分配
|
Java
JVM-剖析对象内存分配流程
JVM-剖析对象内存分配流程
167 0
|
存储 算法 安全
深入理解JVM虚拟机 - jvm的对象分配策略
​ JVM的对象分配策略是面试的中经常会碰到的点,也是学习和了解虚拟机必须迈过的一个坎。本文并不是单纯的总结书中的内容,在个人针对书中的案例进行实验的时候,发现结果居然和书中的结果不匹配,所以抽了不少时间专门研究了一下这一块,下面根据个人的学习和总结来描述一下个人对于JVM对象分配策略的解读。
202 0
9-FreeRTOS之静态内存分配与动态内存分配
9-FreeRTOS之静态内存分配与动态内存分配
|
存储 缓存 Java
深入理解Java虚拟机_自动内存分配管理_01
深入理解Java虚拟机_自动内存分配管理_01
117 0