内存管理简便复习总结

在virtual的知识里摸爬滚打好几天,最近大脑有些不够用了,现在整理一下

                非考虑内存对齐时各个结构的大致模型

至于考绿内存的在前面几张已经叙述过了,为了方便,我再纸上画了整体的流程,,

内存分配要注意对齐参数=min(pack,最大字节的类型); 虚函数指针和虚函数表指针跨越的大小一定是对齐参数的整数倍,即使中间会造成不必要的填充浪费,

本人已经上传到相册,共11张

      https://i.cnblogs.com/EditGalleries.aspx?catid=938935  (相册1)

      https://i.cnblogs.com/EditGalleries.aspx?catid=938937      (相册2)

类的实部字节对齐细则:

类分为实部和虚部,而实部作为一个整体的结构自然也需要字节对齐。又因为是类的一个部分所以字节对齐也有点特殊。总的来说可以描述如下:

1.         有虚部的类不需要整体进行自身字节对齐,但是对于外部来讲有虚部的类的有效对齐是他的各个基类,包括实基类和虚基类,和成员变量中有效对齐参数最大的那个。

2.         实部的有效对齐参数是实继承的各个基类和各个成员变量(也包括隐藏成员变量)中有效对齐参数最大的那个,实部按照这个有效对齐参数进行自身对齐。

3.         实部的起始地址代表了类的起始地址,所以在该类作为其他派生类的子基类的时候,实部的起始地址相对于总的类的起始地址的偏移要是类的有效对齐的整数倍。

时间: 2024-08-02 03:17:54

内存管理简便复习总结的相关文章

蓝懿iOS培训日志6 自习日小记和复习内存管理

今天是自习日,我把从开学到现在学的知识全部过了一遍,会的很熟练的略过,有印象生疏了的再看一下,不明白的着重学习,整个过程伴随着做笔记,把知识概括成自己理解的文字用文本分开保存好,以后就不用像今天一样花大把时间复习,只需要看看自己整理的笔记就好了. 内存管理挺重要,需要好好理解消化. 手动内存管理(MRC)中常用的三个方法 retain:导致内存计数+1 release:导致内存计数-1 copy:复制出来一个新的对象 和之前对象的数据可能一致 但是 不是同一个对象 此对象内存计数是1 autor

iOS复习笔记4:内存管理

一 基础原理 1 为什么需要内存管理 因为移动设备内存有限,每个app所占用的空间有限. 当app占用内存空间过多时,系统会发出内存警告,这是回收一些不在使用的内存. 例如:不再使用的类对象和实例. 2 管理对象 任何继承自NSObject类的对象 3 内存区域 堆:主动分配空间,需要管理 栈:局部变量,自动管理 例如: int a = 1; Person* p = [[Person alloc] init]; a,p都放在栈区 Person分配的空间在堆区 二 引用计数 1 定义 每个OC对象

(转)从内存管 理、内存泄漏、内存回收探讨C++内存管理

http://www.cr173.com/html/18898_all.html 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对 C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃 C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能

说说iOS与内存管理(上)

http://www.cocoachina.com/ios/20150625/12234.html 说起内存管理,看似老生常谈,而真正掌握内存管理的核心其实并不简单.ARC/MRR以及“谁分配谁就负责释放”这种基本原则是很重要的,但不是本文要讨论的重点.之前本人还没在小站发过相关的文章,本篇文章中,我本人是想结合实际开发和调试中遇到的一些细节问题,来谈谈iOS的内存管理内在机制和调试方法. 上一篇文章已经是4月份的了,时间飞快又过去了好久,小站5月份没有文章更新,罪过罪过.最近小站的站长我又转换

iOS开发之c语言基础Lesson-10 动态内存管理 上课笔记 与 试题练习

//函数声明 int max(int a, int b); char * getString(); int main(int argc, const char * argv[]) { //////////////////Lesson 10 动态内存管理 课堂笔记 和 练习 ///////复习上周所学 /////////常量和变量的区别: //常量中的内容不能被修改,只能访问: //变量中存储的数据时可以随时修改的. // //const 关键字的作用: 修饰变量不可改变.当做常量使用 //  c

C++内存管理(超长,例子很详细,排版很好)

[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能.本期专题将从内存管理.内存泄漏.内存回收这三个方面来探讨C++内存管理问题

C++内存管理(超长)

[导语] 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能.本期专题将从内存管理.内存泄漏.内存回收这三个方面来探讨C++内存管理问题

【IOS学习基础】内存管理

1.内存几大区域 1> 栈区:局部变量(基本数据类型.指针变量). 2> 堆区:程序运行的过程中动态分配的存储空间(创建的对象). 3> BSS段:没有初始化的全局变量和静态变量. 4> 数据区:已经初始化的全局变量和静态变量.(字符串常量) 5> 代码段:程序编译后的代码的内容. 2.引用计数器 1> 引用计数器:每个继承自NSObject的对象都有一个引用计数器,用来表示当前对象有几个拥有者. 2> 引用计数器的作用:用来判断对象是否应该回收. 3> 引

Objective-C 内存管理之 _ARC

内存管理之 ARC 和 自动释放池 一.ARC 中的变量所有权修饰符 变量修饰符,主要用来标识对象的生命周期.在手动内存管理方式中没有这些概念. ARC 环境下变量所有权修饰符主要有以下几个: __strong __weak __unsa_unretained __autoreleasing 详细说明: (1) 变量默认值都是__ strong 修饰 只要强引用存在,对象就不能释放.当超过了对象的作用域以及没有强引用时,对象会自动销毁. _strong 属性基本上能适应 ARC 环境下的所有情况