Objective-C编程 - 1. 浅谈内存分配

简介: Objective-C语言的对象类型都必须用指针,对象所占的内存是在堆(heap)上分配的。 NSString也必须在堆上分配,因此必须用指针。 NSString *someString = @"here is the string";NSString *anotherString = someString; 上面例子的内存分布图如下:   分配在堆中的内存必须直接管理,分配在栈上用于保存变量的内存会在其栈帧弹出时自动清理。

Objective-C语言的对象类型都必须用指针,对象所占的内存是在堆(heap)上分配的。

NSString也必须在堆上分配,因此必须用指针。

NSString *someString = @"here is the string";
NSString *anotherString = someString;

上面例子的内存分布图如下:

 

分配在堆中的内存必须直接管理,分配在栈上用于保存变量的内存会在其栈帧弹出时自动清理。

Objective-C中内存管理的机制叫自动引用计数(ARC)。

CGRect是结构体,是栈对象,因此不需要使用指针。

CGRect frame;
frame.origin.x = 0.0f;
frame.size.width = 100.0f;

目录
相关文章
|
1月前
|
存储 Linux 编译器
Linux C/C++ 编程 内存管理之道:探寻编程世界中的思维乐趣
Linux C/C++ 编程 内存管理之道:探寻编程世界中的思维乐趣
50 0
|
18天前
|
缓存 安全 Java
Java并发编程进阶:深入理解Java内存模型
【4月更文挑战第6天】Java内存模型(JMM)是多线程编程的关键,定义了线程间共享变量读写的规则,确保数据一致性和可见性。主要包括原子性、可见性和有序性三大特性。Happens-Before原则规定操作顺序,内存屏障和锁则保障这些原则的实施。理解JMM和相关机制对于编写线程安全、高性能的Java并发程序至关重要。
|
1月前
|
存储 编解码 Linux
深入解析Linux C/C++ 编程中的内存泄漏问题
深入解析Linux C/C++ 编程中的内存泄漏问题
112 1
|
1月前
|
消息中间件 Linux
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
22 2
|
2月前
|
存储 编译器 程序员
近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)
近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)
106 0
|
2月前
|
程序员 编译器 C++
C++核心编程一:内存分区模型(持续更新)
C++核心编程一:内存分区模型(持续更新)
|
2月前
|
存储 缓存 并行计算
DP读书:鲲鹏处理器 架构与编程(四)内存顺序模型与内存屏障
DP读书:鲲鹏处理器 架构与编程(四)内存顺序模型与内存屏障
36 1
|
6月前
|
存储 缓存 分布式数据库
[笔记]Windows核心编程《十七》内存映射文件(二)
[笔记]Windows核心编程《十七》内存映射文件(二)
|
6月前
|
缓存 Java 编译器
[笔记]Windows核心编程《十七》内存映射文件(一)
[笔记]Windows核心编程《十七》内存映射文件
|
6月前
|
存储 Windows 内存技术
[笔记]Windows核心编程《十五》在应用程序中使用虚拟内存
[笔记]Windows核心编程《十五》在应用程序中使用虚拟内存

热门文章

最新文章