码迷,mamicode.com
首页 > 其他好文 > 详细

内存管理

时间:2016-09-21 14:34:09      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

内存管理

  c语言的内存分两种:静态内存,动态内存

 

静态内存

  静态内存包括 栈区,数据区,代码区

  [特点] 

    <1>静态内存,由系统进行分配 who

    <2>静态内存的大小在程序运行之前就可以确定 when

    <3>静态内存是在 栈区,数据区,代码区 进行分配的 where

    <4>静态内存,由系统进行释放 who

 

动态内存

  动态内存,堆区

  [特点]

    <1>动态内存,由程序员手动写代码进行分配 who

    <2>动态内存,内存大小/内存分配动作,必须在程序运行时才能确定 when

    <3>动态内存,是在 堆区 进行分配的 where

    <4>动态内存,由程序员手动写代码进行释放 who

 

堆内存分配 memory alloc

    void *malloc(size_t);
    //malloc的参数,表示所要分配的堆内存的大小(以字节为单位)
    //malloc的返回值,返回的是成功分配的内存的首地址

    [] 因为,返回的这个地址可能是任意大小内存的首地址,所以返回值类型为一个泛型指针类型

 

堆内存释放 free 

    void free(void *);
    //传入所要释放堆内存的首地址,释放对应的堆内存
    //同一个堆内存,不能多次释放,多次释放会导致程序崩溃
    //堆内存不进行释放,会导致内存泄露
    //对于一个长时间运行的应用程序来说,内存泄露会导致系统的[可用内存]变少,应用反应迟钝,卡

 

//对于一个短时间运行的应用程序来说,内存泄露可以忽略.因为程序结束时,未及时释放的堆内存,也会被系统释放

内存管理

标签:

原文地址:http://www.cnblogs.com/JunDemo/p/5892318.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!