zoukankan      html  css  js  c++  java
  • iOS堆栈-内存-代码在据算机中的运行

      其实作程序不管是那行,学什么语言最终的目的是和就算机打交道的,我们写的程序计算机是怎么处理的呢???

      计算机运行我们的程序无非就是吧磁盘-内存-cpu三者结合起来

      我们写一个程序代码肯定是在此盘中存着呢,但我们编译的时候是把我们写的代码按照一定的规则合并成一个文件(。exe)也就是我们平常见的安装包,当我们运行.exe文件时,这时才是我们的程序执行 ,

    //注意:大家千万不要把些程序当成程序在代码中的运行,一个程序要分为,编写,编译,执行  ,每个程序都要经过这三个过程

      编写:就是我们写的代码

      编译:是把我们写的代码按照一定的规则合并成一个文件(。exe)

      执行:执行时候 系统献给我们的程序分派一定的内存,这时候的内存叫做(栈)然后程序开始找到程序的入口main(),找到后开始逐行逐句的执行(每行代码都站内存),   

      堆:在main()函数中我们遇到“alloc”(在其他语言中好多是new关键字)说明我们生成了一个堆;

      //栈是有限的  而堆是无限的

    #import <Foundation/Foundation.h>

    @interface fist: NSObject

    {

        int a;

        int b;

    }

    @propertyint a,b;

    -(void)Print;

    @end

     

     

    @implementation fist

    @synthesize a,b;

    -(void)Print

    {

        NSLog(@"a==%db==%d",a,b);

    }

    @end

     

    int main(int argc, const char * argv[])//栈的出现

    {

        @autoreleasepool {

            // insert code here...

            fist *one;//  定义了一个类的指针(在32为的系统中只占4个字节的内存)

            one=[fist alloc];//为one声明内存  (这个时候我们就有“堆“了)

            one=[one init]; 初始化类(其实init是一个初始化函数,在这里不用细究起是什么)

        int a=0;//在这里我们有回到了栈里面

        }

        return 0;

    }

     
  • 相关阅读:
    出现System.web.mvc冲突的原因及解决方法CS0433
    看完此文还不懂NB-IoT,你就过来掐死我吧...
    html5调用手机陀螺仪实现方向辨识
    黑盒测试和白盒测试的区别
    CentOS7 下 keepalived 的安装和配置
    centos 下 mysql+keepalived实现双主自由切换
    MySQL 高可用性—keepalived+mysql双主(有详细步骤和全部配置项解释)
    备份VMware虚拟磁盘文件 移植到其他虚拟机
    Centos7 Mysql 双机热备实现数据库高可用
    CentOS7配置Mysql热备份
  • 原文地址:https://www.cnblogs.com/flyingdreaming/p/memory.html
Copyright © 2011-2022 走看看