暑期实习后端面试笔记-2

什么时候用堆区?什么时候用栈区?堆和栈的主要区别由如下几点: 一、管理方式不一样; 二、空间大小不一样; 三、可否产生碎片不一样; 四、生长方向不一样; 五、分配方式不一样; 六、分配效率不一样;(1)管理方式操作系统 对于栈来说,是由编译器自动管理,无需咱们手工控制;对于堆来讲,释放工做由程序员控制,容易产生内存泄露。(2)空间大小: 通常来说在32位系统下,堆内存能够达到4G的空间,从这个角度来看 堆内存几乎是没有什么限制的。可是对于栈来说,通常都是有必定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M。固然,这个值能够修改。(3)碎片问题 对于堆来说,频繁的new/delete势必会形成内存空间的不连续,从而形成大量的碎片,使程序效率下降。对于栈来说,则不会存在这个问题,由于栈是先进后出的队列,他们是如此的一一对应,以致于永远都不可能有一个内存块从栈中间弹出,在他弹出以前,在他上面的后进的栈内容已经被弹出,详细的能够参考数据结构。(4)生长方向 对于堆来说,生长方向是向上的,也就是向着内存地址增长的方向;对于栈来说,它的生长方向是向下的,是向着内存地址减少的方向增加。(5
 2022-04-03   实习    C++  面经