ARC(Automatic Reference Counting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。下面是你会经常用来去创建一个View的代码段: UIVi ...
分类:
移动开发 时间:
2017-03-23 12:20:21
阅读次数:
306
使用Mat类,内存管理变得简单,不再像使用IplImage那样需要自己申请和释放内存。 Mat是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵的指针。 矩阵头的尺寸是常数值,但矩阵本身的尺寸会依图像的不同而不同,通常比矩阵头的尺寸大数个数量 ...
分类:
其他好文 时间:
2017-03-19 12:11:44
阅读次数:
321
Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片。其中的Drawees可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放内存。 Fresco是Facebook开源Android平台上一个强大的图片加载 ...
分类:
移动开发 时间:
2017-03-17 18:46:50
阅读次数:
317
1.auto_ptr 和 scoped_ptr 的异同 a 和 s 都是通过析构函数去 delete T* 实现自动释放内存。a 可以转移所有权,但是 s 不可以 2. scoped_array sa 管理 new [] 分配的内存,析构时使用delete [] 因为 sa 不能动态增长,没有ite ...
分类:
其他好文 时间:
2017-03-15 18:52:01
阅读次数:
155
1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存 2. 没有正确地清除嵌套的对象指针 3. ...
分类:
编程语言 时间:
2017-03-15 13:33:23
阅读次数:
213
1、Mat类 早期的opencv中,使用IplImage和CvMat数据结构来表示图像。IplImage和 CvMat 都是c语言的结构。使用这两个结构的问题是内存需要手动管理,开发者必须清楚的知道何时需要申请内存,何时需要释放内存。这个开发者带来了一定的负担,开发者应该将更多精力用于算法设计,因此 ...
分类:
其他好文 时间:
2017-03-14 22:38:10
阅读次数:
214
由于浅拷贝使多个对象共用一块内存地址,调用析构函数时导致一块内存被多次释放,导致程序奔溃。 实现string类的时候通常显示的定义拷贝构造函数和运算符重载函数。 由于释放内存空间,开辟内存空间时花费时间,因此,在我们在不需要写,只是读的时候就可以不用新开辟内存空间,就用浅拷贝的方式创建对象,当我们需 ...
分类:
其他好文 时间:
2017-03-13 14:39:46
阅读次数:
170
内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下,避免碎片的产生。这就要求内核采取灵活而恰当的内存分配策略。通常,内存分配一般有两种情况:大对象(大的连续空间分配)、小对象(小的空间分配)。针对不同的需求,Linux分别采取了伙伴系统算法和SLAB进行内存分配。 伙伴系统:把所有的空闲页 ...
分类:
系统相关 时间:
2017-03-12 23:00:55
阅读次数:
419
在《Windows核心编程》第五版的第十八章 《堆》 中提到了进程默认堆和额外创建的堆。这在编程中是十分重要的知识,今天整理一下。 1,堆非常适合分配大量的小型数据。使用堆可以让程序员专心解决手头的问题,而不必理会分配粒度和页面边界之类的事情。因此堆是管理链表和数的最佳方式。但是堆进行内存分配和释放 ...
分类:
系统相关 时间:
2017-03-10 22:28:26
阅读次数:
282
在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(Garbage Collection,GC)完成的,程序员不需要通过调用函数来释放内存,但也随之带来了内存泄漏的可能,而且每台设备配...
分类:
移动开发 时间:
2017-03-08 11:38:46
阅读次数:
271