网站开发实用技术第2版课后答案,电台网站建设要求,软文营销网,平台是什么意思有哪些1.内存管理方式#xff1a; 堆#xff1a;一般由程序员分配释放#xff0c;程序员申请时需要指明大小#xff0c;leg,C语言中malloc函数#xff1a;p1(char*)malloc(10),C中#xff1a;p2new char[20].若程序员不去释放#xff0c;当程序结束时可能由操作系统释放 …1.内存管理方式 堆一般由程序员分配释放程序员申请时需要指明大小leg,C语言中malloc函数p1(char*)malloc(10),C中p2new char[20].若程序员不去释放当程序结束时可能由操作系统释放 注意其与数据结构的堆完全是两回事分配方式类似于链表分配释放的关键字new,malloc,delete,free 栈由系统自动分配和释放存放函数的参数值局部变量等等操作类似于数据结构的栈,eg:生命一个局部变量 int b,系统自动在栈中为其开拓空间 2.系统响应 堆OS有一个记录空闲内存地址的链表当OS收到程序的申请时会遍历该链表寻找第一个空间大于所申请空间的堆结点然后将该结点从空闲结点链表中删除并将该结点的空间分配给程序另外对于大多数系统会在这块内存空间中的首地址处记录本次分配的大小这样代码中的delete语句才能正确的释放本内存空间。另外由于找到的堆结点的大小不一定正好等于申请的大小系统会自动的将多余的那部分重新放入空闲链表中。 栈只要栈的剩余空间大于申请空间系统将为程序提供内存否则将报异常提示栈溢出 3.分配效率 堆是由new分配的内存一般熟读比较慢而且容易产生内存碎片不过用起来比较方便。 栈由系统内存自动分配程序员无法控制速度较快。 4.存放内容 堆一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排 栈存放函数参数(由右往左入栈)函数中的局部变量。多数C编译器下 5.生长方向 堆是由低地址向高地址扩展的数据结构 栈由高地址向低地址扩展的数据结构。 6.碎片问题 堆频繁的new/delete势必会造成内存空间的不连续从而造成大量的碎片使程序效率降低。 栈则不会存在这个问 题 因为栈是先进后出的队列且存储空间保持林旭。 7.空间大小 堆一般来讲在32位系统下内存可以达到4G的空间从这个角度来看堆内存几乎是没有什么限制的。 栈一般都是有一定的空间大小的。 详见http://baike.baidu.com/view/93201.htm