C 内存管理

来源:互联网 发布:淘宝质检报告怎么弄 编辑:程序博客网 时间:2024/06/11 00:56
  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

0 0
原创粉丝点击