C 内存管理

  1. 静态区、栈、堆(堆栈 == 栈 != 堆)
    静态区:保存全局变量和static变量,在整个程序的生命周期内部都存在,在编译的时候就已经被分配
    栈:保存局部变量,栈上的内容只在函数的局部范围内存在,函数运行结束的时候,便自动被销毁,效率高,但是空间有限
    堆:由malloc系列函数或new操作符分配的内存,到运行free和delete时结束,使用灵活、空间大,但是易出错

  2. 常见的内存错误

    1. 指针没有指向一块合法的内存
      解决方法:用malloc申请一块内存
    2. 为指针分配内存太小
      注意malloc()里面的表达
    3. 内存分配成功,但未初始化
      用memset()给内存初始化,一般为0
    4. 内存越界
    5. 内存泄漏
      内存泄漏来源是堆上的内存,由malloc系列函数或new分配的内存,用完之后没有用free或delete进行释放
    6. 内存已经释放,但是继续用通过指针来使用
  3. 一般使用的过程
    初始化指针(置NULL eg:char* p = NULL;)
    分配内存(malloc(size), 应注意内存大小)
    初始化(memset())
    释放指针(free()或delete)
    指针重新置NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值