Menu
CoddyTech

栈内存与堆内存

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 31 课,共 63 课。

运行 C 程序时,它会使用两个不同的内存区域:栈和堆。理解这两个内存区域之间的区别对于高效地编写 C 程序至关重要,尤其是在使用指针和动态内存分配时。

栈用于静态内存分配。局部变量、函数参数和函数调用信息都存储在这里。系统会自动管理栈:声明局部变量时,内存会分配到栈上;变量超出作用域时,这部分内存会自动释放。

void function() {
    int x = 10;  // 在栈上分配内存
    char arr[100];  // 也在栈上分配内存
    // 函数结束时,内存会自动释放
}

堆用于动态内存分配。这是一块较大的内存池,你可以在程序运行期间申请内存。

与栈不同,堆需要手动管理:你必须显式申请内存,并在使用完后释放它。这样你能更好地控制内存,但也要承担更多责任。

关键区别在于管理方式:栈内存由系统自动管理,容量有限;堆内存则需要手动管理,容量大得多。在接下来的课中,你将学习如何使用 malloc() 和 free() 等函数来操作堆内存。

亲手试试

这节课没有代码挑战。

quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器