程序中的栈: 函数调用过程: 函数调用栈的变化: ebp的作用就是用来进行函数调用的返回的。 函数返回仅仅是修改了esp指针,栈中的数据不会立即改变。 函数调用栈上的数据: g返回后,a数组的数据已经没有意义了。 示例: g返回后,a中的数据就会改变了,示例如下; 第23行调用printf时已经将栈 ...
分类:
其他好文 时间:
2018-08-29 01:01:11
阅读次数:
214
一:Google的V8引擎的简化模型 如下,包含一个内存堆和函数调用栈。内存堆用于分配内存,函数调用栈用于记录当前程序的运行路径。当网页在chrome中运行报错时,控制台会输出一串错误信息,其来源就是函数调用栈。所以当函数声明时,其函数体存在于堆中,当函数被调用时,其信息存于call stack栈顶 ...
分类:
其他好文 时间:
2018-08-18 20:11:33
阅读次数:
156
我们在之前学习了 C++ 中有关异常的知识,现在我们来重新回顾下。那么异常的格式是什么呢?便是 try ... catch ...;try 语句处理正常的代码逻辑,而 catch 语句则处理异常情况,try 语句中的异常由对应的 catch 语句处理。 在 C++ 中,通过 throw 语句抛出异常信息。throw 抛出的异常必须被 catch 处理,当前函数如果能处理异常,程序将继续往下执行;如果当前函数无法处理异常则函数停止执行并返回。未被处理的异常会顺着函数调用栈向上传播,直到被处理为止,否则程序将停止执行。 同一个 try 语句可以跟上多个 catch 语句。catch 语句可以定义具体处理的异常类型,不同类型的异常由不同的 catch 语句负责处理;try 语句中可以抛出任何类型的异常,catch(...) 用于处理所有类型的异常,任何异常都只能被捕获(catch)一次
分类:
其他好文 时间:
2018-08-10 01:32:51
阅读次数:
206
快速定位Android程序的关键代码 1.通过apktool反编译apk文件,得到AndroidManifest.xml文件,可以得到程序用到的组建、配置、以及主Activity 2.信息反馈法(特殊字符串) 3.特征函数法(Toast) 4.一行一行代码看 5.插桩法 6.查看调用栈 7.Meth ...
分类:
移动开发 时间:
2018-08-09 14:03:03
阅读次数:
212
Java采用面向对象的方式处理异常: 1.抛出异常: 在执行一个方法时,如果发生异常,则这个方法生成代表该异常的一个对象,停止当前执行路径,并把异常对象提交给JRE; 2.捕获异常: JRE得到异常后,寻找相应的代码来处理异常。JRE在方法的调用栈中查找,从生成异常的方法开始回溯,直到找到相应的异常 ...
分类:
其他好文 时间:
2018-08-08 18:55:51
阅读次数:
120
1、线程的生命周期:新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。 2、当线程对象调用了start()方法之后,该线程处于就绪状态,Java虚拟机会为其创建方法调用栈和程序计数器,处于这个状态中的线程并没有开始运行,只是表示该线程 ...
分类:
编程语言 时间:
2018-08-07 13:58:54
阅读次数:
133
前言 本帖记录一些常用的,效果好的 rop gadgets. uClibc 从栈中设置 并跳到 的gadgets , 函数第二行 使用 "案例" 使用tips: 调用函数时,进入函数内部时要求 指向函数的起始地址。 四个组合使用,调用栈中 shellcode 的 rop_gadget , 需要可以控 ...
分类:
其他好文 时间:
2018-08-03 23:43:30
阅读次数:
409
--递归本质 函数调用是通过栈(stack)这种数据结构实现的 每当进入一个函数调用,栈区就会加一层栈帧, 每当函数返回,栈区就会减一层栈帧,但栈区空间有限,要注意防止栈溢出 # 递归函数:在函数内部,自己调用其自身即是递归函数# 递归最简易的原型 """ 递归非常占用内存空间,使用递归如果层级过大 ...
分类:
编程语言 时间:
2018-07-28 18:31:13
阅读次数:
176
转自:https://www.jianshu.com/p/e8bbee3c1c4a Error类和Exception类的父类都是throwable类,他们的区别是: Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程 ...
分类:
编程语言 时间:
2018-07-19 19:07:20
阅读次数:
179
讲述 递归 ,即调用函数自身的编程方法,递归需要的 基线条件即最简单状态,递归条件即指导函数将条件引向最简状态。由于递归的特殊性,调用栈必不可少,栈为先进后出的数据结构,类似高斯消元法的“向前——向后”,我们将问题逐渐堆高简化,再从高处解决,带入底端,此为调用栈。 1 递归 假设要找一把钥匙,而钥匙 ...
分类:
编程语言 时间:
2018-07-09 11:17:32
阅读次数:
167