oc为每个对象提供一个内部计数器,这个计数器跟踪对象的引用计数,当对象被创建或拷贝时,引用计数为1,每次保持对象时,调用retain接口,引用计数加1,如果不需要这个对象时调用release,引用计数减1,当对像的引用计数为0时,系统就会释放掉这块内存,释放对象调用dealloc
当对象包含其他对象时,就得在dealloc中自己释放他们
NSObject是IOS所有类的基类
有两个基本函数,...
分类:
其他好文 时间:
2014-05-23 07:53:38
阅读次数:
333
指针悬空
指针悬空在我们使用指针的时候很容易被忽视,主要的表现是:指针所指向的内存
释放,指针并没有置为NULL,致使一个不可控制的指针。
#include
#include
int *pointer;
void func()
{
int n=8;
pointer=&n;
printf("pointer point data is %d\n",...
分类:
编程语言 时间:
2014-05-22 09:03:09
阅读次数:
371
首选,感谢博主shield-hand的一篇文章(ms sql
server缓存清除与内存释放)。写的非常细致、简洁。我这里并不是自己写博客,而是用自己的思维将众多博文或官网资料做一次整合。
在讲解问题发生原因之前,我先贴出来解决方案。之后再详细剖析其深层次的原因。 ms sql server...
分类:
数据库 时间:
2014-05-16 09:21:21
阅读次数:
362
oc没有java的垃圾回收机制,所以对象的内存释放很重要,基本数据类型,我们不用理会,编译器会处理;oc的每个对象内部都由一个计数器,用来记录当前有几个指针在指向该对象;当计数器为0时该对象会从内存中释放;相关方法和概念:1:retain:对象方法,调用该对象方法,计数器+1,有返回值,返回对象本身...
分类:
其他好文 时间:
2014-05-11 23:17:09
阅读次数:
299
1.垃圾收集算法的核心思想
Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。
垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被...
分类:
编程语言 时间:
2014-05-09 01:32:44
阅读次数:
569
经典的一句话:C++程序员觉得内存管理太重要了,所以一定要自己进行管理;C#,Java程序员觉得内存管理太重要了,所以一定不能自己去管理。
某些语言,比如C语言,要求程序员显式的分配内存、释放内存。程序按需分配内存,不需要的时候将内存释放。但是这种做法容易引起内存泄露:即由于某种原因未能将分配...
分类:
编程语言 时间:
2014-05-08 10:32:37
阅读次数:
303
===================== 析构函数
=========================* 析构函数在对象所占用内存释放时调用,通常用来释放相关的资源*
析构函数就是一个特殊的类成员函数,它是构造函数相反构造函数:对象在分配内存之后,立即调用析构函数:对象在内存被释放之前调用例:~P...
分类:
编程语言 时间:
2014-05-07 17:26:16
阅读次数:
394
实现 smart_ptr 智能指针会自动地管理内存(释放不需要的内存),而不需要程序员去操心。
它能避免迷途指针(dangling pointers),内存泄漏(memory leaks), 分配失败等情况的发生。智能指针需要为所有实例维护一个引用计数,
这样才能在恰当的时刻(引用计数为0时)...
分类:
编程语言 时间:
2014-05-04 11:56:03
阅读次数:
380