C语言内存管理

2016-06-25  本文已影响22人  奋斗的小老鼠

存储区划分

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

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

全局(静态)区:存放全局变量和静态变量,空间有系统管理,程序执行开辟空间,程序结束空间收回,在程序执行期间一直存在。
常量区:存储常量。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);
上一篇下一篇

猜你喜欢

热点阅读