首页  

堆和栈的区别     所属分类 c 浏览量 817
栈 stack 系统自动分配
在函数中声明一个局部变量
系统自动在栈中为变量开辟内存空间
堆 heap 按需申请 
C语言 malloc free 

char *p = NULL;
p = (char*)malloc(9);
printf("%p\n",p);
free(p);

// c++ free delete
p = new char[9];
printf("%p\n",p);
delete[] p;


栈 自动管理 效率高
堆 手动管理 内存碎片
空闲内存地址链表,寻找第一个空间大于所申请空间的堆节点,
然后将该节点从空闲节点链表中删除,并将该节点的空间分配给程序

栈  向低地址扩展  连续   空间较小
堆  向高地址扩展  不连续  空间较大


new和malloc的区别

上一篇     下一篇
康威定律

C语言字符串

new和malloc的区别

c语言中定义和声明的区别

c语言存储区域和局部变量默认初始值

神奇的js