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。

  • 相关阅读:
    xml根据属性去重。如csprj去重
    table中td的内容换行。
    基于jq的表单填充
    c#包含类文件到csprj中
    t4 根据表名数组生成实体
    js中找string中重复项最多的字符个数
    一步步配置cordova android开发环境
    .net framework卸载工具
    Sql Server查询视图和表
    DbHelper.ttinclude 更新,查询视图和表
  • 原文地址:https://www.cnblogs.com/CoderHong/p/9036118.html
Copyright © 2011-2022 走看看