一、存储区划分

     按照地址从高到低的顺序:栈区,堆区,静态区,常量区,代码区
    1.栈区:局部变量的存储区域
     局部变量基本都在函数、循环、分支中定义
     栈区的内存空间由系统自动分配和回收
     栈顶,栈底:先定义的局部变量的存储区域从栈底开始分配,后定义的局部变量向栈顶分配
     特点:先进后出,后进先出
     当函数、循环、分支结束后,局部变量的生命周期结束,不再被使用,由系统自动回收内存空间
     栈区的内存安全问题:在函数中返回栈区的地址是不安全的

 void test() {
     ;
 }
 void test1() {
     int a;  // 栈区不会清空数据,只会回收内存空间,故输出为上个变量的值
     printf("a = %d\n", a);;
 }
 int main() {
    test();
    test1();
    ;
 }

2.静态区:静态变量和全局变量的存储区域
     静态区的内存空间由系统自动分配和回收
     静态区的变量生命周期和整个程序一样长

 int sumValue(int number) {
     ;
     n++;
     number += n;
     return number;
 }
 int main() {
     ; // 用static修饰的变量成为静态变量
     // 静态变量只能初始化一次
     printf());
     printf());
    ;
 }
     

  3.常量区:常量的存储区域
     内存空间由系统自动分配和回收
    常量区的内容只能读取,不能修改

4.代码区:所有的语句编译成二进制指令存放在代码区
    存储空间由系统自动分配和回收
    代码区的内容只能读取,不能修改
    程序执行结束后,代码区的内存空间由系统回收

iOS学习之C语言内存管理的更多相关文章

  1. iOS学习之Object-C语言内存管理

    一.内存管理的方式      1.iOS应用程序出现Crash(闪退),90%的原因是因为内存问题.      2.内存问题:      1)野指针异常:访问没有所有权的内存,如果想要安全的访问,必须 ...

  2. iOS学习之Object-C语言内存管理高级

    一.属性的内存管理

  3. iOS学习笔记之ARC内存管理

    iOS学习笔记之ARC内存管理 写在前面 ARC(Automatic Reference Counting),自动引用计数,是iOS中采用的一种内存管理方式. 指针变量与对象所有权 指针变量暗含了对其 ...

  4. iOS学习17之OC内存管理

    1.内存管理的方式 1> iOS应用程序出现Crash(闪退),90%的原因是因为内存问题. 2> 内存问题 野指针异常:访问没有所有权的内存,如果想要安全的访问,必须确保空间还在 内存泄 ...

  5. 【原】iOS学习18之OC内存管理高级

    1.属性的内存管理 1> 属性的语义特性 2> assign下的属性内部实现 @property (nonatomic, assign) NSString *name; @synthesi ...

  6. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  7. 菜鸟学习Cocos2d-x 3.x——内存管理

    菜鸟学习Cocos2d-x 3.x——内存管理 2014-12-10 分类:Cocos2d-x / 游戏开发 阅读(394) 评论(6)    亘古不变的东西 到现在,内存已经非常便宜,但是也不是可以 ...

  8. 深入理解Linux C语言内存管理

    问题不能拖,我这就来学习一下吧,争取一次搞定. 在任何程序设计环境及语言中,内存管理都十分重要. 内存管理的基本概念 分析C语言内存的分布先从Linux下可执行的C程序入手.现在有一个简单的C源程序h ...

  9. iOS经典面试题总结--内存管理

    iOS经典面试题总结--内存管理 内存管理 1.什么是ARC? ARC是automatic reference counting自动引用计数,在程序编译时自动加入retain/release.在对象被 ...

随机推荐

  1. Visual Studio 2010 C++ 工程文件解读

    在 VS2010 中,C++ 的工程文件已经和 2005 / 2008 有了很大的不同,而是完全采用 MSBUILD 的属性方式进行表达,并且可以让用户通过一次性的配置而对所有的属性进行自定义: 根据 ...

  2. 简单的TCPIP 客户端 服务器

    // soClient.cpp : Defines the entry point for the console application. // #include "stdafx.h&qu ...

  3. WPF学习系列之七 (样式与行为)

    样式(Styles)是组织和重用格式化选项的重要工具.不是使用重复的标记填充XAML,以设置诸如边距.颜色及字体等细节,而可以创建一系列封装所有这些细节的样式.然后可以在需要之处通过一个属性应用样式. ...

  4. 图解CISCO 3550忘记密码解决方法

    图解CISCO3550忘记密码解决方法 Cisco网络设备密码忘记怎么初始出厂默认值?这时网友常常会提出的问题,怎么解决,有人说啦,去百度去谷歌一下不就行啦,然而这对初学者任是个挑战,虽然步骤只有简单 ...

  5. Oracle笔记 目录索引

    Oracle笔记 一.oracle的安装.sqlplus的使用 Oracle笔记 二.常用dba命令行 Oracle笔记 三.function .select Oracle笔记 四.增删改.事务 Or ...

  6. Question2Answer初体验

    Question2Answer初体验   高质量的问答社区十分有价值,很多无法解决的问题能通过问答社区找到解决办法,而对于站长来说,垂直的问答社区也很有潜力.最近盯上问答这一块,发现和我的一些思路很符 ...

  7. Boost C++: 网络编程1

    #include <iostream> #include <boost/asio.hpp> #include <boost/config/compiler/visualc ...

  8. C# 多线程传参

    using System; using System.Threading; //多线程调试: 2013.10.08 namespace ThreadExample { class App { publ ...

  9. dig out deledted chat messages

    One of my friends asked me to do a favor for her. She said her friend deleted some important chat me ...

  10. jansen字符串转换为xml格式

    /// <summary> /// json字符串转换为Xml对象 /// </summary> /// <param name="sJson"> ...