编译器可以在堆上为对象分配内存

时间:2015-04-04 05:17:44

标签: objective-c

每个人都说在目标c中,所有对象都存储在堆中。

谁负责将对象存储在堆中,是编译器吗?

NSString * myName = @" xyz&#34 ;;

在上面的代码行中,在编译时创建了对象。为什么? @" xyz"存储在堆或堆栈中?

1 个答案:

答案 0 :(得分:1)

静态数据(在编译时定义的数据)存储在二进制文件(可执行文件,库或框架)中。加载该二进制文件时,静态数据将与其一起加载到内存中。它不在堆或堆栈中。

包括Objective-C字符串文字,例如@"xyz"