☰
朝花夕拾 · C语言 | 内存篇
2026/9/25 10:55:04 网站建设 项目流程

一.malloc,calloc

void *malloc(size_t size);

功能:向堆区申请空间
参数:
size:申请的空间字节数

返回值:

成功:返回申请到的空间首地址

失败:NULL


void 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,这块内存直到程序结束才会被操作系统回收(内存泄漏)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询