zoukankan      html  css  js  c++  java
  • iOS开发系列-打印内存地址

    打印内存地址

    基本数据类型

    定义一个基本数据类型,会根据变量类型分配对应的内存空间。比如定义一个int类型的变量a。

    int a = 10;
    

    内存如下

    输入变量a在内存中内存地址

    NSLog(@"变量a在内存的内存地址=%p", &a);
    

    基本类型的指针

    基本类型的指针变量本质就是保存了变量的内存地址

    int a = 10;
    int *p = &a;
    

    内存如下

    输入指针变量保存的内存地址,以及指针变量本身自己在内存分配空间的内存地址

    NSLog(@"指针变量p的保存的地址=%p", p);
    NSLog(@"指针变量p的自身在内存地址=%p", &p);
    

    对象类型

    对象类型的指针变量也不例外,本质也是保存该实例在内存的地址

    Person *p = [[Person alloc] init];
    

    内存如下

    输出对象在内存空间的值也就是等于输出指向该实例的指针变量保存的内存地址

    NSLog(@"Person实例的内存地址=%p---指针变量p的内存地址=%p---指针变量p保存的内存地址=%p", p, &p, p);
    

    补充

    补充一

    在实际的开发中我们通过下面打印

    Person *p = [[Person alloc] init];
    NSLog(@"%@", p);
    

    控制台输出的地址就是对象实例在内存中的地址也是指针变量p保存的地址。

    补充二

    我们声明了一个指针类型的变量默认通过NSLog输出为nil,本质就是该指针变量保存的指针变量保存的地址为0x0

    Person *p;
    NSLog(@"%@---%p", p, p);
    

    补充三

    使用weak修饰的属性指针变量,指向的对象在内存中销毁后,指向该对象的指针变量自动被赋值为null。

  • 相关阅读:
    mysql 优化20点
    java function
    设计模式 概览
    Linux安装java1.8并配置环境变量
    windows下一次执行多个sql文件
    mybatis查询结果为空时的返回值问题
    Java中Json与String互转
    SSM Service自动注入失败
    本地安装Mysql5.7过程中出现的一系列问题
    解决本地工具无法连接服务器上的mysql的问题
  • 原文地址:https://www.cnblogs.com/CoderHong/p/9036118.html
Copyright © 2011-2022 走看看