栈 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的区别