C语言内存管理

存储区划分

栈区:在函数内部定义的局部变量和局部数组,都存在栈区,栈区空间由系统管理,函数调用时开辟空间,函数执行结束后自动收回。

堆区:空间由开发人员手动开辟,手动收回。

全局(静态)区:存放全局变量和静态变量,空间有系统管理,程序执行开辟空间,程序结束空间收回,在程序执行期间一直存在。
常量区:存储常量。1.整型常量。2.浮点型常量。3.字符型常量。常量区的内容不能被更改,空间由系统管理,声明周期和应用程序声明周期一致。
代码区:存放程序指向的CPU指令,告诉计算计如何来执行程序。

屏幕快照 2016-06-25 下午5.44.00.png

堆区空间管理

//    malloc:在堆区开辟size大小的空间
//    
//    void * :泛型,可以代表所有的指针类型。int *,char*,short*.
//    
//    free().释放堆区空间,只是标记删除,不清除内容。

    char *p = malloc(8);//p存储区域空间是首地址
    strcpy(p, "iphone");//往堆区空间上存储字符串
    printf("%s\n",p);
    free(p);//释放p指向的堆区空间,释放空间,只是标记删除,不清除内容。
    p = NULL;//指向无效的空间,防止野指针。
    printf("%s\n",p);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 谨记 人生有两条路,一天需要用心走,叫做梦想;一条需要用脚走,叫做现实。心走的太快,会迷路的;脚走的太快,会摔倒的...
    长风留言阅读 5,946评论 7 16
  • 前言 基础篇介绍了一些关于C语言内存管理的常见概念,包括内存编址、堆栈、内存操作函数、变量和数组存储简介等等。本文...
    老板娘来盘一血阅读 5,665评论 10 33
  • 前言 C语言作为一门应用途广泛、功能强大、使用灵活的面向过程式编程语言。既可用于编写应用软件,又能用于编写系统软件...
    老板娘来盘一血阅读 13,034评论 32 83
  • 对于一个C语言程序而言,内存空间主要由五个部分组成代码段(.text)、数据段(.data)、BSS段(.bss)...
    朱森阅读 432评论 0 0
  • 曾经我一度看着手机走路,被归到低头族。当我抬起眼时,我发现我与外界相隔的越来越远。曾经的睁眼看世界变成了:打开...
    羊毛与花少年阅读 312评论 2 2