ObjC中对象其实就是一个指针?

iOS 码拜 10年前 (2015-05-01) 1045次浏览 0个评论
 

这句话严格来说对么?还是指针指向的那块地址才是ObjC中所谓的对象?

ObjC中对象其实就是一个指针?
10分
事实上,指针指向的那块地址才是ObjC中所谓的对象。如有一个student 类,我们创建了一个stu的指针变量,它指向了Student对象的地址。

Student *stu = [[Student alloc] init];

假设Student对象的地址为0xff43,指针变量stu的地址为0xee45,stu中存储的是Student对象的地址0xff43。即指针变量stu指向了这个Student对象。
ObjC中对象其实就是一个指针?

ObjC中对象其实就是一个指针?
5分
我接着楼上的话说,所谓这句代码:
Student *stu = [[Student alloc] init];

是在栈中创建一个名中stu的指针,指向堆中Student对象,有没有想过我们在释放一个对象之后,指针(还是指在堆中的内存上)还要指向NULL

ObjC中对象其实就是一个指针?
5分
引用 2 楼 zhangao0086 的回复:

我接着楼上的话说,所谓这句代码:
Student *stu = [[Student alloc] init];

是在栈中创建一个名中stu的指针,指向堆中Student对象,有没有想过我们在释放一个对象之后,指针(还是指在堆中的内存上)还要指向NULL

Student对象被销毁了,地址为0xff43的内存就变成了”垃圾内存”,然而,指针变量stu仍然指向这一块内存,这时候,stu就称为了“野指针”


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明ObjC中对象其实就是一个指针?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!