,堆中的内存分配是系统负责的;
全局区
包括2个部分:未初始化和初始化; 也是说,在内存中是放在一起的,比如:int a;未初始化, int a = 10 初始化的 2者都在全局区/静态区;
常量区:...,速度快;
当一个app启动后,代码区,常量区,全局区大小都是已经固定的,因此指向这些区的指针不会产生崩溃性的错误,而堆区和栈区是时时刻刻变化的(堆得创建和销毁,栈的弹入和弹出),所以当使用一个指针指向这个...2区里面内存的时候,一定要注意内存是否已经被释放,否则会产生程序崩溃(即野指针报错)
iOS的内存管理
这里按照苹果文档所述,重点对堆内存分配整理下。...不管是Objective-C的[NSObject alloc],还是C代码的对内存分配,最终重任都会落到malloc库上,释放也是如此,最终都将使用malloc库中的free()。...如果分配的内存比较大,可以直接使用vm_allocate,得到一个VM对象(与Linux类似),这个在实际使用前不分配物理内存。malloc的内部实现都是开源的,感兴趣的可以去了解去看。