栈内存与堆内存
本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 31 课,共 63 课。
运行 C 程序时,它会使用两个不同的内存区域:栈和堆。理解这两个内存区域之间的区别对于高效地编写 C 程序至关重要,尤其是在使用指针和动态内存分配时。
栈用于静态内存分配。局部变量、函数参数和函数调用信息都存储在这里。系统会自动管理栈:声明局部变量时,内存会分配到栈上;变量超出作用域时,这部分内存会自动释放。
void function() {
int x = 10; // 在栈上分配内存
char arr[100]; // 也在栈上分配内存
// 函数结束时,内存会自动释放
}堆用于动态内存分配。这是一块较大的内存池,你可以在程序运行期间申请内存。
与栈不同,堆需要手动管理:你必须显式申请内存,并在使用完后释放它。这样你能更好地控制内存,但也要承担更多责任。
关键区别在于管理方式:栈内存由系统自动管理,容量有限;堆内存则需要手动管理,容量大得多。在接下来的课中,你将学习如何使用 malloc() 和 free() 等函数来操作堆内存。
亲手试试
这节课没有代码挑战。
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C 在线编译器