以前学过C++编程语言,但是只是学习一些基本概念性的知识,然后完成老师布置的简单的作业,仅限于此。在去年找工作时,突然发现很多公司非常注重C++的内存管理,自己也就临时抱佛脚,看了一下《程序员面试宝典》和《剑指Offer》,在网上查了一些资料,自己记了一些,对于C++有了一个新的认识。现在时隔半年多,马上快毕业了,突然意识到C++中内存的重要性,尤其是在接触QT以后,开始打算把C++的基础再夯实一下,坚决不做半瓶油。
一、首先介绍一下C/C++编译程序时,对程序的内存分配:
1、栈区(stack):以前一直说堆栈,其实堆和栈是完全不同的,栈是由编译器自动分配和释放,主要是存放参数值、局部变量值等,其操作方式类似于数据结构中的栈。
2、堆区(heap):一般是由程序员分配和释放,如果程序员不释放,程序进程结束时可能由操作系统回收。注意:它和数据结构中的堆是两回事,分配的方式类是于链表。
3、全局区(静态区)(static):全局变量和静态变量的存储是放在一起的,初始化的全局变量和静态变量在同一块区域,未初始化的全局变量和未初始化静态变量在相邻的另一块区域(分别是data区和bbs区