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;

    }

     
  • 相关阅读:
    无法加载模块 TP3.2
    always_populate_raw_post_data
    关于(void**)及其相关的理解
    面向对象设计原则
    数据对齐总结
    C++ POD类型
    do..while(false)的用法总结
    c++为什么定义了析构函数的类的operator new[]传入的参数会多4字节?
    C++ new new[]详解
    【转】C内存操作函数
  • 原文地址:https://www.cnblogs.com/flyingdreaming/p/memory.html
Copyright © 2011-2022 走看看