最近看了不少递归的例子,突然有了点想法其实递归,就是不断地调用自身。如果不好理解,就理解成是不断地调用同一个方法,只不过这个方法是自己。递归的具体过程涉及到栈内存等,这里就不写了,写写我的一些看法吧递归主要一个就是对结果的处理,一般来说,递归到最深一层时开始返回,然后返回的过程中呢,会带回一个结果比...
分类:
其他好文 时间:
2014-08-05 00:01:08
阅读次数:
356
我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc函数就为您解决了问题,它的函数原形是void* malloc(size_t size),在动态开辟的内存中,在使用完后我们要使用free函数来释放动态开辟的内存空间。
下面我们来看...
分类:
编程语言 时间:
2014-08-04 17:58:07
阅读次数:
147
Part 1 在C++中,内存分成5个区,分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 1.栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 2.堆,就是那些由new...
分类:
编程语言 时间:
2014-08-04 08:16:46
阅读次数:
287
Java的内存分为两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型变量和对象的引用都在函数的栈内存中分配。当在一个代码块中定义一个变量的时候,java就在栈中为其分配内存,当超过作用域的时候内存自动释放。 对内存用来存放new创建的对象和数组。在堆中分配的内存,由java虚拟机的垃圾回...
分类:
编程语言 时间:
2014-08-01 12:50:21
阅读次数:
181
block默认是存储在栈内存中的,需要做一些操作才能到堆中MRC情况下-------------------这种情况下block创建以后需要做block_copy()操作才能复制到堆中,如果block在栈中,是不会对block内使用的对象做操作的但是如果你的block已经拷贝到了堆中,你就要注意了,...
分类:
其他好文 时间:
2014-07-30 03:16:03
阅读次数:
218
内存常用的区域分类:栈区(stack)、堆区(heap)、全局区(static区)、文字常量区、程序代码区。栈区:由编译器自动分配和释放,遵循”后进先出“的规则。在函数调用时,第一个进栈的是主函数中的下一条指令地址,然后是函数的各个参数(大多数C编译器中,参数从右往左入栈),然后是函数的局部变量。静...
分类:
其他好文 时间:
2014-07-18 17:23:21
阅读次数:
190
C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针
(1)开辟的内存没有释放,造成内存泄露
(2)野指针被使用或释放
(3)非法释放指针
(1)开辟的内存没有释放,造成内存泄露,下面的例子就可能造成20个字节的泄露,内存泄露不是一个立即会引发故障的错误,但是
它将消耗系统内存。
void function1()
{
char *pa;
pa = (...
分类:
编程语言 时间:
2014-07-10 19:34:03
阅读次数:
185
内存管理的管理范围任何继承了NSObject的对象对其他非对象类型无效(int、char、float、double、struct、enum等 )只有OC对象才需要进行内存管理的本质原因:OC对象存放于堆里面非OC对象一般放在栈里面(栈内存会被系统自动回收)系统是如何判断 什么时候需要回收一个对象所占...
分类:
其他好文 时间:
2014-07-09 14:22:54
阅读次数:
190
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分...
分类:
编程语言 时间:
2014-07-07 10:38:38
阅读次数:
198
java 的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使...
分类:
编程语言 时间:
2014-07-03 09:22:32
阅读次数:
211