C语言--内存管理

在C语言中,内存管理是一项重要的编程任务,它涉及到了解程序如何分配、使用和释放内存。C语言提供了多种内存管理方式,主要包括静态内存分配、栈内存分配和动态内存分配。

1 静态内存分配

  • 全局变量和静态变量:编译时就已经确定了内存空间,它们在整个程序生命周期内持续存在,直到程序结束。这类内存由编译器自动分配和回收。
int globalVar = 10; // 全局变量,静态分配
static int staticVar = 20; // 静态局部变量,也是静态分配

2 栈内存分配

  • 局部变量:在函数内部声明的变量存储在栈(stack)中。当函数调用发生时,栈内存被自动分配,函数结束时,栈内存会被自动释放。
void someFunction() {
    int localVar; // 局部变量,在函数调用时分配,在函数结束时释放
}

3 动态内存分配

  • 动态内存分配:在运行时通过系统函数动态地请求和释放内存,程序员需要手动管理这部分内存的生命周期,以避免内存泄漏。
#include  // 包含了内存管理函数的头文件

// 动态内存分配函数
void* malloc(size_t size); // 分配指定字节数的内存,返回指向内存块的指针
void* calloc(size_t num, size_t size); // 分配num个大小为size字节的对象,返回指向内存块的指针,并初始化为0
void* realloc(void* ptr, size_t new_size); // 重新分配ptr指向的内存区域为new_size字节,返回指向新内存块的指针,可能移动原有数据

// 动态内存释放函数
void free(void* ptr); // 释放ptr指向的动态内存区域

// 示例
int* dyna

你可能感兴趣的:(c++,算法,数据结构,c语言)