美文网首页
OBJC 关于程序内存地址01--相同的值内存地址的问题

OBJC 关于程序内存地址01--相同的值内存地址的问题

作者: 品评 | 来源:发表于2018-10-22 18:32 被阅读0次

最近闲来无事.想深度了解一下变量在被编译后运行的地址的变化.闲话少说直接上干货.

#import <Foundation/Foundation.h>

int main(int argc, char *argv[]) {
    @autoreleasepool {
        NSString *str01 = @"This a String";
        NSString *str02 = @"This a String";
        NSString *str03 = @"This a String!";
        
        NSLog(@"str01 %p",str01);
        NSLog(@"str02 %p",str02);
        NSLog(@"str03 %p",str03);
    }
}

输出结果

2018-10-22 17:49:08.374 Test[37468:2743193] str01 0x10d67e028
2018-10-22 17:49:08.374 Test[37468:2743193] str02 0x10d67e028
2018-10-22 17:49:08.374 Test[37468:2743193] str03 0x10d67e048

结果表明.
str01 和 str02 运行后 内容一致.内存地址也是一致.
str01 和 str03 运行后 内容不一致.内存地址也是不一致.

当编译器把 str01和 str02 和 str03 编译后会变成 哈希值.放在程序Data里面..


关于程序内存地址01.png

下面我们可以看到 str01 和 str02 都是去 rdx 寄存器 取值.


关于程序内存地址02.png

上面的事例告诉我们.相同的值内存地址也相同.

相关文章

  • OBJC 关于程序内存地址01--相同的值内存地址的问题

    最近闲来无事.想深度了解一下变量在被编译后运行的地址的变化.闲话少说直接上干货. 输出结果 结果表明.str01 ...

  • Go 关于程序内存地址01--相同的值内存地址的问题

    最近闲来无事.想深度了解一下变量在被编译后运行的地址的变化.闲话少说直接上干货. 输出结果 结果表明.str01 ...

  • Python查看内存地址

    使用id(变量名)获取变量内存地址。 值相同内存地址相同。

  • Day03

    小知识点补充 比较变量内存地址和获取变量内存地址 小数据池 为了节省内存,当多个int或str类型的值相同时,且符...

  • iOS之LLDB常用命令

    打印值、修改值、调用方法 p、po 打印值po:输出值p:输出值+值类型+引用名+内存地址(xcode中有内存地址...

  • 线程问题

    线程共享相同的内存地址空间!

  • Runtime:super原理分析

    目录一,objc_msgSendSuper二,方法和内存地址查找 一,objc_msgSendSuper 1,实例...

  • 😄指针--作为参数进行传递

    内存地址 & 什么是指针 * 指针是一个变量,值为 另一个变量的内存地址值:都是一个代表内存地址的长十六进制数

  • 14.同一运算符

    is/is not 比较两个变量引用对象是否相同,即id/内存地址是否相同 == 比较两个变量引用对象的值是否相同...

  • go内存地址

    go内存地址 内存地址在go中获得该变量的内存地址 用&a 首先声明了一个int类型的变量a,它的值为0,然后又声...

网友评论

      本文标题:OBJC 关于程序内存地址01--相同的值内存地址的问题

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