内存管理及预处理、结构体

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进行分析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值