认真对待内存管理

内存管理,新手需要掌握的一门课。

内存的分配方式:

  • 静态存储区
  • 栈,栈内存的分配是由内置于处理器中的指令来完成,高效,但分配的容量有限,所以像函数的局部变量等避免分配大空间的内存,以免栈爆掉。

常见内存错误及解决:

  • 内存分配并没有成功  [分配完后立马check]
  • 未初始化[缺少初始值不确定]
  • 越界访问内存[确定访问的地址在控制范围之内]
  • 内存泄漏[的确,内存分配后你释放或者不释放,它都在那里,不过能不能够给你用,就......]
  • 访问已经释放掉的内存[函数局部变量使用的栈空间在函数结束后会自动destory掉,所有切记不要返回指向这些内存的指针或引用,另外释放放掉的内存需要置为NULL,避免出现野指针]

指针和数组:

  • 数组名对应着一块内存,而不是指向一块内存。
  • 数组的地址和容量在其生命周期内不变,只有内容可变。
  • 指针可指向任何类型的内存块。

指针参数:

  • 如果函数的参数是一个指针,不要为该指针去动态申请内存,除非它是指向指针的指针,或者用函数返回值来传递内存。

free / delete:

  • 指针消亡并不代表所指向的内存消亡。
  • 指针指向的内存消亡并不代表指针本身消亡或成为NULL指针。

野指针:

  • 野指针的来源:(1)没有初始化;(2)释放后未指向NULL。

malloc / free:

  • malloc并不识别所申请的内存是什么类型。
  • 如果p是一个NULL指针,那free(p)执行多少次都不会有问题,如果不是,则连续两次释放就会出错。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值