1.未初始化的全局变量(·bbs段):bbs类型的全局变量只占运行时的内存空间,而不占用文件空间。在加载程序时,会把所有的bbs全局清0。为保证程序的可移植性,一般手工清0.
2.初始化过的全局变量(·data段):里面存放着数据,运行时既占内存空间,又占文件存储空间。
3.常量数据段(·rodata段):用来存放常量数据。
4.代码(·text段):存放代码和部分整数常量。
5.栈:存放临时变量和函数参数。
6堆:是最灵活的一种内存,它的生命周期完全由使用者控制。(malloc:用来分配一块指定大小的内存;realloc:用来调整、重分配一块存在的内存;free:用来释放不在使用的内存)
7.内存分配的三种方式:从静态存储区域分配;
在栈上创建;
从堆上分配,也叫动态分配。
8.野指针:不是NULL指针,是指向垃圾的指针。(其形成的原因有:指针变量没有被初始化;指针p被free或者delete之后,没有设置NULL,让人误以为p是一个合法指针)
9.常见的内存错误及对策:1)内存未分配成功,却是用了它;
)2内存分配成功,但未初始化就是用了它;
)3内存分配成功且初始化,但操作超过内存边界;
)4忘记释放内存,造成内存泄漏;
)5释放了内存但继续使用它。
10. )1利用gdb逐步查找段错误
)2。分析core文件
)3段错误时启动调试
)4利用backtrace和objdump进行分析