一、nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉; 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为“空对...
分类:
其他好文 时间:
2014-09-28 17:33:24
阅读次数:
181
C++ virtual继承的另一种名称是菱形继承,主要目的是用于解决从不同类继承来的同名数据成员在内存中有不同的拷贝,造成数据不统一的
问题,以致于在进行类释放时造成内存泄漏。将共同的基类作为虚基类,这时从不同的路径继承过来的同名数据成员在内存中就只有一个拷贝,同
一个函数名也只有一个映射。这样不仅就解决了二义性问题,也节省了内存,避免了数据不一致的问题。
如下是实现格式:
cla...
分类:
编程语言 时间:
2014-09-28 13:58:52
阅读次数:
180
5. 内存问题排查手段及相关文件介绍【重点】
对于内存问题排查,或者OOM问题排查,一般会涉及到如下文件,下面将如下文件的分析和设置介绍一下,这也是本文档的重点,后面排查内存信息还是要根据这些文件信息来排查。其实未必是有内存泄露,也可能是一些策略有问题,比如线程数目的增加,buffer的申请、释放时间交集等。
5.1 /proc/sys/vm/min_free_kbytes
min_free...
分类:
其他好文 时间:
2014-09-28 02:30:50
阅读次数:
198
charstr[]={"abcd"}和char*str={"abcd"}的区别char*get_str(void){charstr[]={"abcd"};returnstr;}charstr[]={"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址。此函数返回的是内部一个局部字符数组str的地址..
分类:
其他好文 时间:
2014-09-28 02:16:41
阅读次数:
185
1、堆和栈什么区别?答:管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。2、数组和链表什么区别?答:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。 链表恰好相反,链表中的元素在...
分类:
移动开发 时间:
2014-09-27 23:13:00
阅读次数:
386
让两个对象间建立weak关系这是为了给两个对象间建立weak关系,当一个对象被释放时,另外一个对象再获取这个值时就是nil,也就是不持有这个对象:)源码:WeakRelatedDictionary.h 与WeakRelatedDictionary.m//// WeakRelatedDictiona....
分类:
其他好文 时间:
2014-09-27 19:04:10
阅读次数:
144
//#define ALLOC_CONSOLE#ifdef ALLOC_CONSOLE AllocConsole(); // 开辟控制台 释放:FreeConsole(); SetConsoleTitle(L"Debug Output"); ...
分类:
其他好文 时间:
2014-09-27 12:22:29
阅读次数:
180
/*注意:使用取消功能要很注意,很多C库函数(有阻塞性质的)也隐含有取消点,比如sleep(),pthread_cond_wait(),而且,取消线程并不能完全释放线程资源,所以编程的时候尽量不要使用取消功能。但是,下面这个情况用 异步取消+join 可以达到终止无限循环线程的目的:*/#inclu...
分类:
其他好文 时间:
2014-09-27 02:19:38
阅读次数:
181
哥当初钻牛角尖钻了一个通宵才理解出来的。1 创建对像需要使用某个类,当对像实释放的时候会自动调用这个类的dealloc方法。所以每个类有自己的dealloc方法,当别的类创建的对象被释的时候,自动调用的dealloc方法是属于另一个类的,与本类的dealloc方法无关。2 circle类里的方法调用...
分类:
其他好文 时间:
2014-09-27 01:47:48
阅读次数:
295