`
hua397
  • 浏览: 53786 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

内存这玩意-1

阅读更多

    来拔点草

 

    今天看到个autorelease twice的问题,整了一下,发现一点坑,包含单例、局部常量。

 

    首先,autorelease调多少次,就往pool加多少次,到时候就release多少次,文档有,不必说。

 

    然后,重点来了:NSString *str = [[NSString alloc] init]; 这货release多少次都不crash。。

 

    stack上有:

http://stackoverflow.com/questions/9068883/accessing-a-released-nsstring-doesnt-make-the-app-crash

 

    代码测试,alloc多个string,他们的地址确实是一样的,果然是单例。继续测了一下NSNumber alloc init,竟然是0x0,不觉明厉。。

 

    然后,测format的情况,多次release还是不crash,估计把字符串当成常量,所以怎么release都没用。不过,先用autorelease,再release,runloop结束时就crash鸟,嗯,局部常量是在函数栈里面,退出就被销毁,故当pool释放时,str再release就crash了。

 

    同上,测NSNumber各种initWith,发现obj = initWithInt,然后obj = initWithDouble,两个地址一样,单例无疑,release自然没用,继续同样的加autorelease,跟str一样crash,嗯,因为int/double也都是栈的。值得注意的是initWithBOOL,传YES和NO生成的是不同地址,不再是单例。

分享到:
评论

相关推荐

    各种内存介绍及其分类

    凡是对电脑有所了解的朋友都知道内存这玩意,可是,可能有不少朋友对内存的认识仅仅局限在SDRAM和DDR SDRAM这两种类型,事实上,内存的种类是非常多的,从能否写入的角度来分,就可以分为RAM(随机存取存储器)和ROM...

    易语言-易语言内存生成验证码

    这是CSDN上的人说的,他说:听公司一个图形方面的大佬说过,图形绘制主流的技术,GDI、GDI+、OpenGL,D3D什么的都不支持多线程,同一时间内,只能有一个线程在屏幕绘制,所以,根本就没有什么多线程绘图这个玩意。...

    Nginx源码剖析之内存池,与内存管理

    其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,目前中国大陆使用nginx网站用户有:新浪、网易、腾讯,另外知名的微网志Plurk也使用nginx,以及诸多暂不曾得知的玩意儿...

    java手机浏览器小内存版

    支持小内存的手机 能用的玩意可以用一下哎 123123123123123

    用来运行Eclipse的工具

    如果不使用默认的工作空间,必须命令行启动eclipse,在命令行中配置参数,真的挺麻烦,于是一生气就写了这么个玩意儿,希望大家喜欢。 可以在运行eclipse前配置工作空间、java虚拟机、使用内存、其他参数 --------...

    大文本缓存读取Unicode逐行转UTF-8存储

    VC6.0写的一个小玩意,新公司的入职练手任务。unicode编译环境。要求如下: 题目:用VC6.0实现对unicode格式的文本文件高效率按行读取 要求: (1)实现以下接口 BOOL OpenStringFile(CString path); BOOL ...

    计算机的底层秘密 - 了解计算机的基本逻辑(带目录)

    你管这破玩意叫CPU?你管这破玩意叫线程? 执行I/O操作时底层发生了什么? 从小白到高手,你需要理解同步与异步你管这破玩意叫IO多路复用? CPU是如何理解01二进制的?CPU空闲时在干嘛? 编译器是如何工作的? ...

    获取内存状态.rar

    闲来无事,结合网上程序,自己编的一个小玩意

    Java 内存模型.docx

    我们都知道 Java 语言的可以跨平台的,这其中的核心是因为存在 Java 虚拟机这个玩意。虚拟机,顾名思义就是虚拟的机器,这不是真实存在的硬件,但是却可以和不同的底层平台进行交互。而且 Java 虚拟机模拟的还比较...

    VB内存注册机生成工具源代码

    VB6结合DEBUGAPI写的玩意,没写过调试器一类的可以看看

    redis基础.rar

    周期无法控制可以采用SoftReference,WeakReference,PhantomReference这三种对象来执行(看了Ibatis的缓存机制才发现JDK居然还提供了PhantomReference这玩意儿,得恶补基础啊),这三种都是弱引用,区别在于强度...

    Android代码-LockMyPhone

    所以顺手做了这么个小玩意,打开一个空白透明的悬浮窗,使屏幕不可点击(有特殊情况,比如说我用的小米,按清理键(虚拟键最侧的那个键)清理内存是可以把app杀死的,这时候就GG了,对策就是将app锁住,看图: ...

    VB.net 植物大战僵尸修改器附源码

    VB.net用API修改内存的例程貌似很少,于是心血来潮写了个这玩意,为了写这玩意还特地下了个植物大战僵尸玩,还挺好玩的嗯。 附源代码。

    云计算的基本概念是什么.pdf

    1 / 2 云计算的基本概念 一、云计算的基本概念 "云"这个词已经被说得烂到不能再烂了。云计算,云平台,云+端,云服务,云……但与很多行业里的朋友聊天发现,其 实大家对云计算到底是怎么个玩意,并不是太了解。作者...

    QWebEngineView使用,点击链接,上一页,响应网页消息等

    QWebEngineView使用,点击链接,上一页,响应网页消息等,不过不建议朋友们使用,这玩意儿坑太多了,比如会在你其他地方申请内存的时候造成内存性崩溃,而且这个坑我没找到解法

    多进程通讯 COPYDATA(sendMessage)模块源码与例程-易语言

    最开始做一个中控需要多进程通讯,管道我试了试发现1个管道只能钻进去1个程序,所以这玩意儿就出来了

    《操作系统真象还原》高清完整版,baidu云

    这和内存访问机制中的段是一回事吗 6 0.9 物理地址、逻辑地址、有效地址、线性 地址、虚拟地址的区别 11 0.10 什么是段重叠 12 0.11 什么是平坦模型 12 0.12 cs、ds这类sreg段寄存器,位宽是 多少 12 0.13 什么是...

    使用虚拟机VMware安装Ubuntu 20.04的全教程

    Ubuntu是一个比较流行的Linux桌面系统,最近Ubuntu 20.04出来了,让我们来看看有什么新玩意。 我们使用虚拟机来安装新系统,会比较保险。准备工具如下: Ubuntu 20.04镜像iso 虚拟机VMware或其虚拟机 1. 安装 安装...

    尝鲜Ubuntu 20.04

    Ubuntu是一个比较流行的Linux桌面系统,最近Ubuntu 20.04出来了,让我们来看看有什么新玩意。 我们使用虚拟机来安装新系统,会比较保险。准备工具如下: Ubuntu 20.04镜像iso 虚拟机VMware或其虚拟机 1. 安装 安装...

    Java自学程序员必备+计算机基础+操作系统,组成原理,数据结构+自学必备,内功提升

    3、编程语言是个什么玩意儿.md 4、程序员不能说自己不懂二进制.md 5、位运算和进制转换,原码,反码和补码.md 6、大学老师没讲过的计算机三大原则.md 7、人有三六九等,语言也有高低之分.md 8、程序的编译和解释太...

Global site tag (gtag.js) - Google Analytics