iOS程序的内存布局

作者: RUNNING_NIUER | 来源:发表于2019-08-26 16:51 被阅读0次
iOS程序安装之后,是以Mach-o文件的格式保存在iOS设备里面,当启动程序时,对应的Mach-o文件就会被加载进内存。下面,就来介绍一下iOS程序的内存布局。首先看下图 iOS程序内存布局

如果你拥有iOS逆向的知识,这个话题对你来说应该如同砍瓜切菜,假如不巧你不懂逆向的话,还有一种方法可以来验证上面的图。看如下测试代码

//*********************main.m**********************

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int a = 10;                   //已初始化全局变量

int b;                        //未初始化全局变量

int main(int argc, char * argv[]) {
    @autoreleasepool {
        static int c = 20;    //已初始化静态变量
        
        static int d;         //未初始化静态变量
        
        int e;                //未初始化局部变量

        int f = 20;           //已初始化局部变量

        NSString *str = @"123";//字符串常量
        
        NSObject *obj = [[NSObject alloc] init];//通过alloc动态分配(实例对象)
        
        NSLog(@"\n&a=%p\n&b=%p\n&c=%p\n&d=%p\n&e=%p\n&f=%p\nstr=%p\nobj=%p\n",
              &a, &b, &c, &d, &e, &f, str, obj);
        
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

上述案例中,包括个各种变量,我们通过打印来观察一下它们的内存情况,结果如下

2019-08-26 16:20:25.294729+0800 Interview03-内存布局[5467:359025] 
&a=0x10fad3db8
&b=0x10fad3e84
&c=0x10fad3dbc
&d=0x10fad3e80
&e=0x7ffee012e1fc
&f=0x7ffee012e1f8
str=0x10fad3068
obj=0x600002d20160
将这些变量按内存地址从小到大排列,再和内存布局图对比如下

这样就验证了一开始抛出的结论。

相关文章

  • 四十三、内存管理之(二)内存分布

    iOS程序的内存布局

  • iOS面试 -- 内存管理

    来源:爱玩游戏的iOS菜鸟 内存布局 iOS程序下内存布局 不同内存布局区域的含义stack(栈):方法调用hea...

  • 内存布局

    一、iOS程序的内存布局 在iOS程序的内存布局中从低到高分保留区、代码段、数据段、堆区、栈区、内核区,具体存储信...

  • iOS 内存(系统引用的技术)了解

    iOS程序的内存布局 Tagged Pointer OC对象的内存管理 copy和mutableCopy

  • iOS 内存管理

    iOS程序的内存布局 Tagged Pointer 从64bit开始,iOS引入了Tagged Pointer技术...

  • iOS内存管理底层原理

    内存布局 了解程序内存布局请点击程序的内存布局以及栈、堆原理[https://www.jianshu.com/p/...

  • iOS内存管理

    一 iOS程序内存布局 二 Tagged Pointer内存地址优化 三 MRC概念讲解 四 引用计数的存储 五 ...

  • iOS程序的内存布局

    如果你拥有iOS逆向的知识,这个话题对你来说应该如同砍瓜切菜,假如不巧你不懂逆向的话,还有一种方法可以来验证上面的...

  • iOS程序的内存布局

    iOS引入Tagged Pointer技术,为了优化NSString、NSNumber、NSDate小对象的存储。...

  • iOS程序的内存布局

    iOS程序安装之后,是以Mach-o文件的格式保存在iOS设备里面,当启动程序时,对应的Mach-o文件就会被加载...

网友评论

    本文标题:iOS程序的内存布局

    本文链接:https://www.haomeiwen.com/subject/urcdectx.html