一、预备知识—程序的内存分配 1. 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据...
分类:
其他好文 时间:
2014-11-19 23:51:06
阅读次数:
235
区别:1.局部变量: (1)在函数体内部或者复合语句中定义的变量称为局部变量。 (2)作用域为当前的函数体。 (3)在栈区(动态存储区)分配。 (4)函数调用时开始分配,调用结束时释放。2.全局变量: (1)在函数体之外定义的变量称为全局变量。 (2)当前文件所有函数都可以调用该变量,其...
分类:
其他好文 时间:
2014-11-19 12:32:03
阅读次数:
183
一个C/C++编译所占用的内存分配如下:1.栈区 编译器自动分配释放,存放函数参数,局部变量。2.堆区 有程序员分配释放,可以存放自定义的类型空间。如果程序员不释放,可能有OS释放。3. 静态区 存放全局变量,静态变量,包括未初始化的全局/静态变量,已初始化的全局/静态变量。4.文字常量区 ...
分类:
其他好文 时间:
2014-11-19 12:14:34
阅读次数:
185
官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点: 1.作为一个函数变量的一个引用,当函数返回时,其处于激活状态。 2.一个闭包就是当一个函数返回时,一个没有释放资源的栈区。 简单的说,javascript允许使用内部...
分类:
编程语言 时间:
2014-11-19 10:28:24
阅读次数:
209
一个C++编程占用的内存分为以下几个部分:(1)栈区 ( stack ):由编译器自动分配、释放,存放函数的参数值,局部变量值。操作方式类似数据结构中的stack。(2)堆区 ( heap ):一般由程序员分配、释放。如果程序员未释放,一般由OS在程序结束时回收。同数据结构中的堆不同,分配方式类似链...
分类:
编程语言 时间:
2014-11-16 00:28:34
阅读次数:
174
1. 内存地址
以Intel的中央处理器为例,Linux 32位的系统中,物理内存的基本单位是字节(Byte),1个字节有8个二进制位。每个内存地址指向一个字节,内存地址加1后得到下一个字节的地址。这里用以表示物理内存实际位置的地址,就是通常所说的物理地址(Physical Address)。CPU正在执行的进程代码、进程数据和栈区数据等,都临时保存在物理内存中。
线性地址(Linear Ad...
分类:
系统相关 时间:
2014-11-12 16:31:01
阅读次数:
272
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为下面几个部分 1、栈区(stack)— 由编译器自己主动分配释放 ,存放函数的參数值,局部变量的值等。其 操作方式相似于数据结构中的栈。 2、堆区(heap) — 一般由程序猿分配释放, 若程序猿不释放,程序结束时可能由O...
分类:
其他好文 时间:
2014-11-11 14:09:22
阅读次数:
179
一:autorelease1> autorelease原理:将我们创建的对象放到一个对象释放池中(是一个栈区)当池子释放时,会将池子中的对象都做一次release操作(自动释放池存放在一个池子中,就近原则,符合先进后出)2>自动释放池的创建方式(1)ios5.0以前的创建方式NSAutoreleas...
分类:
其他好文 时间:
2014-11-10 23:16:43
阅读次数:
249
栈区间:在函数内部声明的变量都存放在栈区间,比如int char 数组 结构体 指针,只管申请,系统会自动帮我回收,收回的时间是作用域结束之后,遵循的原则是"先进后出",int a = 10;const int m =10;printf("%p\n", &m);printf("%p\n", &a);...
分类:
编程语言 时间:
2014-11-10 15:16:47
阅读次数:
186
OC内存管理:前言:为什么基本数据类型分配在栈区,而动态分配的内容在堆区。因为基本数据类型的存放的数据在内存中得大小是固定的比如int类型的数据就是分配-2^31——2^31-1。而要分配不确定的数据在内存中得话,就动态分配到堆区。一:基本原理1>为什么要进行内存管理。 内存管理的范围是:继承自NS...
分类:
其他好文 时间:
2014-11-09 22:13:54
阅读次数:
269