在ios编程中,如果成员变量为对象,我们需要对成员变量内存管理,否则,会造成内存泄露。即我们要对成员变量进行手动的内存释放。 很显然,是ARC的问题。 错误原因:在创建工程的时候点选了“Use Automatic Reference Counting”选项,但是又调用了对象的release方法 AR ...
分类:
其他好文 时间:
2016-04-16 23:02:20
阅读次数:
254
深拷贝的现代写法相比传统写法更加简单。也就是建立一个中间对象tmp,它的_str指针指向的内容是s._str的一份拷贝,交换tmp._str和_str后,_str就指向了s._str那份拷贝,出了作用域tmp会自动调用它的析构函数,也就把原先_str指向的内存释放了,同样达到了我们要的效果。 如下图 ...
分类:
其他好文 时间:
2016-04-16 18:17:31
阅读次数:
133
1.垃圾收集算法的核心思想 Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。 垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空 ...
分类:
移动开发 时间:
2016-04-16 00:42:18
阅读次数:
470
首先说一下他们两的作用,nil就是把一个对象的指针置为空,只是切断了指针与内存中对象的联系,它对内存的释放没有什么作用;而release才是真正用于内存释放的,release后系统会将该块内存标记为可用(可重新分配)。所以nil并没有释放内存,只有release才是真正释放内存。 二者使用顺序,如果 ...
分类:
其他好文 时间:
2016-04-10 21:23:12
阅读次数:
193
1. 动态内存分配 (1)C++通过new关键字进行动态内存申请,是以类型为单位来申请空间大小的 (2)delete关键字用于内存释放 ▲注意释放数组时要加[],否则只释放这个数组中的第1个元素。 【实例分析】C++中的动态内存分配 2. new关键字 (1)对比new和malloc new mal ...
分类:
编程语言 时间:
2016-04-10 19:25:02
阅读次数:
187
避免block中循环引用,内存释放不了的问题,规范编码很重要。 相对来说,在block中操作self时,正确的使用姿势。 ...
分类:
移动开发 时间:
2016-04-05 19:12:27
阅读次数:
159
UINavigationController当设置根控制器的时候,意思就是把根控制器压入栈内,当我们push的时候,我们把下一个控制器压入栈内,当我们pop的时候把上面的控制器的内存释放 UITabBarController的使用步骤 初始化UITabBarController 设置UIWindow ...
分类:
其他好文 时间:
2016-04-01 17:44:00
阅读次数:
135
这次给大家介绍CUDA的初始化和如何在显卡上运行程序,即先将数据从内存复制到显存,再写好运算的核函数,之后用CUDA调用核函数,完成GPU上的计算,之后将结果复制回内存,释放掉显存的整个过程。...
分类:
其他好文 时间:
2016-03-30 20:58:34
阅读次数:
315
模拟实现AutoPtr、ScopedPtr、SharedPtr智能指针实际上就是能够智能化的管理动态开辟空间的内存释放问题,C++中引入智能指针,很大一方面是当我们在动态开辟空间时,由于一些疏忽,或者说是对于一些代码,执行的顺序不是我们预期能够想到的,导致一些内存泄露的问题,使得程序..
分类:
其他好文 时间:
2016-03-24 18:38:40
阅读次数:
167
函数不能返回指向栈内存的指针!因为返回的都是值拷贝! char *str = "abcd"这样就是字符串常量,这种能返回,而char str[] = "abcd"就不能在函数中返回了,因为这个是局部变量,函数结束后就内存释放了 如果非要进行返回局部变量,就只能用static来限制局部变量了,这样函数
分类:
编程语言 时间:
2016-03-08 23:55:28
阅读次数:
259