1、strong weak 2、retain assign retain针对非基本数据类型,针对要用到堆区的属性,此关键字,编译器会为数据的 setter dealloc添加一些特殊处理,使得对堆的管理更节省更有效 @property (retain) Yard * yard; yard = yar ...
分类:
其他好文 时间:
2016-08-13 22:25:50
阅读次数:
156
(1)指针是一个变量,只不过这个变量存储的是一个地址,这个地址指向内存的一个存储单元。引用跟原来的变量实质是一个东西,只不过是原变量的一个别名,不占用内存,只是在编译时,系统会临时分配一个类似与变量的东西存储,编译完也就释放了,具体咋折腾跟编译器有关系。(一般讨论的堆区和栈区...占用内存,都是指的 ...
分类:
其他好文 时间:
2016-08-09 10:39:05
阅读次数:
122
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令) 2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 ...
分类:
其他好文 时间:
2016-08-08 00:38:40
阅读次数:
112
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。 ...
分类:
其他好文 时间:
2016-08-04 16:18:26
阅读次数:
137
堆和栈的对比 从以上知识可知,栈是系统提供的功能,特点是快速高效,缺点是有限制,数据不灵活;而堆是函数库提供的功 能,特点是灵活方便,数据适应面广泛,但是效率有一定降低。栈是系统数据结构,对于进程 / 线程是唯一的;堆是函数库内部数据 结构,不一定唯一。不同堆分配的内存无法互相操作。栈空间分静态分配 ...
分类:
其他好文 时间:
2016-08-03 22:09:26
阅读次数:
129
今天程序运行时,将其关闭,会出现 内存不能为Read,不知原因; 原因: 1. 通常都是 定义的变量 未初始化 直接使用 或者 野指针 ; 2. 内存泄漏 : 内存空间使用完毕之后未回收 一般指堆区内存泄漏 比如 使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须 ...
分类:
其他好文 时间:
2016-07-23 22:53:23
阅读次数:
280
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。 ...
分类:
其他好文 时间:
2016-07-21 12:22:53
阅读次数:
92
第九章 线程
作者:Allen B. Downey
原文:Chapter 9 Threads
译者:飞龙
协议:CC BY-NC-SA 4.0
当我在2.3节提到线程的时候,我说过线程就是一种进程。现在我会更仔细地解释它。
当你创建进程时,操作系统会创建一块新的地址空间,它包含text段、static段、和堆区。它也会创建新的“执行线程”,这包括程序计数器和其它硬件状态...
分类:
编程语言 时间:
2016-07-16 15:59:05
阅读次数:
245
对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来讲,释放工作有程序员控制,容易产生memory Leak。 申请大小: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域。这句话的意思是栈顶上的地址和栈的最大容量是系统预先规定好的,在Windows下,栈的大小是2M( ...
分类:
其他好文 时间:
2016-07-14 13:28:13
阅读次数:
152
内存空间分为堆和栈,堆在应用程序生命周期内一直存在,而栈在方法调用完毕后就释放。 1、堆区:类、对象。 2、栈区:方法的形式参数和局部变量、对象的引用。 注意: 1、对象的引用之所以能操作对象,是因为它在栈中保留了堆中对象的实际地址。 2、C++中用关键字new方式产生的对象在堆中,而用 Fight ...
分类:
编程语言 时间:
2016-07-11 18:50:34
阅读次数:
171