朝花夕拾 · C语言 | 内存篇 📅 发布时间:2026/8/26 17:48:11 👁 浏览次数: 一.malloccallocvoid *malloc(size_t size);功能向堆区申请空间参数size:申请的空间字节数返回值成功返回申请到的空间首地址失败NULLvoid free (void * ptr)功能释放申请的堆区空间参数ptr:申请到的堆区的空间首地址void calloc( size_ t nmemb, size_ t size)功能向堆区申请数组空间并清空成0与malloc的主要区别参数nmemb :申请的数组的元素个数size:数组中的每个元素占的字节数返回值成功返回申请到的空间首地址失败NULL二.堆与栈堆区空间在函数中开辟的空间希望随着函数结束该空间仍然存在可以在堆上开辟。当需要的空间比较大时可以去堆上开辟栈空间相比太小默认8MB而堆空间取决于你的物理内存和虚拟内存堆和栈的区别栈区1.栈区用来保存局部变量函数的形参返回值及函数调用的保护线程2.栈区由操作系统自动管理3.栈区默认大小8M比堆区空间小4.栈的访问效率比堆的访问效率高。5.随函数而生随函数而死。函数执行完毕栈上的变量立刻销毁。堆区程序员手动管理。必须主动调用malloc、calloc去申请用完后必须调用free去释放。如果忘了free这块内存直到程序结束才会被操作系统回收内存泄漏。