A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨勇 中级黑马   /  2014-4-25 14:20  /  1049 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨勇 于 2014-4-25 23:20 编辑

这里对我的问题进行简单的说明:
@interface Student : NSObject
{
    int _age;
}
- (void)test;
@end

@implementation Student
- (void)test
{

}
@end

int main()
{
    Student *s=[Student new];
    return 0;
}

如上描述,设计了一个学生类,我知道在Student *s=[Student new];这里,创建了一个新的类的对象,并为对象分配了存储空间,请问student这个类是在什么时候加载到内存的,是在创建对象的同时?对类进行声明的时候,还是类进行定义(实现)的时候?谢谢!

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

倒序浏览
类没有分配存储空间,只有创建对象的时候才分配才分配存储空间的

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
对象 是存放在 堆里面的, 在new的时候分配的
回复 使用道具 举报
2的狠正经 发表于 2014-4-25 19:01
对象 是存放在 堆里面的, 在new的时候分配的

一般对象的方法和类方法是存放在类里的,视频里讲也会给类分配存储空间,请问类是什么时候分配的空间?谢谢!
回复 使用道具 举报
魅影穿眸 发表于 2014-4-25 18:43
类没有分配存储空间,只有创建对象的时候才分配才分配存储空间的

不是对象方法和类方法都存储在类中么?能不能解释的详细点,谢谢!
回复 使用道具 举报
内存分为5大区域,其中有两块区域, 一块是堆, 一块是栈
栈里面放的是局部变量, 里面的变量是系统自动回收的
堆里面放的是动态产生的变量,
例如 Student *s = [[Srudeng alloc] inti]中
*s就是存放在栈中, 新对象是放在堆中的, s中放的是新对象的地址
每一个对象默认有一个*isa指针, 它指向了类中的方法,
希望对你有帮助,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马