堆栈

006_FREERTOS其他API函数

匿名 (未验证) 提交于 2019-12-02 23:42:01
(一)FreeRTOS其他API函数是在调试中使用的,具体使用的看书本,贴出来为了方便查找 (二)FreeRTOS其他API函数 (三)常用 获取信息: 1. 任务句柄 2. 任务名字 3. 任务编号 4. 当前任务壮态,eTaskState 是一个枚举类型 5. 任务当前的优先级 6. 任务基础优先级 7. 任务运行的总时间 8. 堆栈基地址 9. 高水位线 10. 保存系统总的运行时间 获取信息: 1. 创建任务的时候给任务分配的名字 2. 任务的壮态信息,B 是阻塞态,R 是就绪态,S 是挂起态,D 是删除态 3. 任务优先级 4. 任务堆栈的“高水位线”,就是堆栈历史最小剩余大小 5. 任务编号,这个编号是唯一的,当多个任务使用同一个任务名的时候可以通过此编号来做区分 文章来源: https://blog.csdn.net/xiaoguoge11/article/details/91566725

Android 开发常用方法及命令

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myvest/article/details/91411708 1、APK常用调试命令 am命令 dumpsys 命令 pm命令 其他常用命令 2、堆栈相关 addr2line gdb配合core dump调试 打印堆栈 3、系统层面的调试命令 dumpsys bugreport cat命令看节点信息 top和free查看cpu和内存情况 1、APK常用调试命令 am命令 1)启动某个apk 启动的方法为 am start -n 包(package)名/活动(activity)全路径 比如: am start -n com.android.music/com.android.music.VideoBrowserActivity 或者am start -n com.android.music/.VideoBrowserActivity am start -a action 可以指定action来启动apk 但你不知道activity时, monkey -p 包名 1 ,也可以启动apk 2)发送指定广播: am broadcast -a xxx广播 如开机广播: am broadcast -a android.intent.action.BOOT_COMPLETED dumpsys 命令

IDA Pro常用基础操作(一)

匿名 (未验证) 提交于 2019-12-02 23:38:02
IDA Pro常用基础操作 1、查看字符串 2、跳转到代码中 3、跳转到地址 跳转到_text_410CC9位置 4、堆栈窗口 IDA-ESP窗口现在列出了我们感兴趣的函数的堆栈结构 通过调试器窗口指向堆栈窗口,点击"箭头" 5、把汇编转换成源代码 强大的F5 6、监视 我们可以添加监视,通过监视观察在程序执行过程中数据的变化。 7、转到入口点 8、Text view 9、Graph view 10、查看string 文章来源: https://blog.csdn.net/dyxcome/article/details/91345070

C++面向对象与堆栈内存管理(一)

匿名 (未验证) 提交于 2019-12-02 23:32:01
版权声明:All Rights Reserved. 未经允许,严禁转载 https://blog.csdn.net/u014132143/article/details/90212141 在C++中写面向对象程序与用其他的完全面向对象语言来编写程序有很大不同,根本原因在于――C++只传递值,不传递对象。事实上,这种不同应该归类为“不完全面向对象的语言”和“完全的面向对象语言”的区别之处,C++只是作为前者中的一个代表。 本系列文章以一个简单的数据库类为例,由浅入深,逐渐体会这种“完全”和“不完全”之间的差异。 文章的目标人群是C++初学者。写作目的,一是阐述这种“完全”和“不完全”之间的差异,二是希望在分析这一案例的过程中,加深大家对于面向对象中“封装、继承、多态”的理解,帮助大家学习面向对象的思想。 博主同样也是编程的新人,如果有任何疏漏之处,请多多包涵,不吝赐教。 #0.0 Python的代码示例 以下是用Python实现的数据库,作为一个完全面向对象语言的例子,后面我们要以此为目标用C++实现同样的功能。 #先看python的优雅之处 class Record: #记录类 def __init__(self): self.name = None self.id = None self.gpa = None return def __repr__(self): return

数据结构实验之栈与队列八:栈的基本操作

匿名 (未验证) 提交于 2019-12-02 22:56:40
Problem Description 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 Input 首先输入整数t(1 <= t <= 10),代表测试的组数,以后是 t 组输入。 对于每组测试数据,第一行输入两个正整数 m(1 <= m <= 100)、n(1 <= n <= 1000),其中m代表当前栈的最大长度,n代表本组测试下面要输入的操作数。 而后的 n 行,每行的第一个字符可能是'P’或者'O’或者'A’;如果是'P’,后面还会跟着一个整数,表示把这个数据压入堆栈;如果是'O’,表示栈顶元素出栈;如果是'A',表示询问当前栈顶的值'。 Output 对于每组测试数据,根据其中的命令字符来处理堆栈; (1)对所有的'P'操作,如果栈满输出'F',否则完成压栈操作; (2)对所有的'A'操作,如果栈空,则输出'E',否则输出当时栈顶的值; (3)对所有的'O'操作,如果栈空,则输出'E',否则输出栈顶元素的值,并让其出栈; 每个输出占据一行,每组测试数据(最后一组除外)完成后,输出一个空行。 Sample Input 2 5 10 A P 9 A P 6 P 3 P 10 P 8 A P 2 O 2 5 P 1 P 3 O P 5 A Sample

栈和堆的区别Java

匿名 (未验证) 提交于 2019-12-02 21:53:52
转载自: https://blog.csdn.net/u011546655/article/details/52170470 在Java中,内存分为两种:栈内存、堆内存 1、栈内存 栈内存主要用来执行程序,比如基本类型的变量和对象的引用类型变量。 主要特点如下: (1) 先进后出,后进先出; (2) 存取速度比堆快,仅次于寄存器,栈数据可以共享,但缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。 栈内存分配机制: 栈内存可以成为一级缓存,由垃圾回收器自动回收。 数据共享: 例子 int a=3; int b=3; 第一步处理: 没有找到,将3存放,a指向3。 第二步处理: 找到,直接赋值。 2、堆内存 堆内存的作用是用于存储Java中的对象和数组,当 我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。 主要特点如下: (1) 先进先出,后进后出; 堆可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,但缺点是,由于要在运行时动态分配内存,存取速度较慢。 堆内存分配机制: 由Java虚拟机的自动垃圾回收器来管理。 3、栈和堆的区别 JVM是基于堆栈的虚拟机。JVM为每个新创建的线程都分配一个堆栈。也就是说,对于一个Java程序来说,它的运行就是通过对堆栈的操作来完成的。堆栈以帧为单位保存线程的状态

java的堆栈的差别

匿名 (未验证) 提交于 2019-12-02 21:53:52
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method) 堆区: 3、在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时 动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 4.堆:(对象) 引用类型的变量,其内存分配在堆上或者常量池(字符串常量、基本数据类型常量),需要通过new等方式来创建。 堆内存主要作用是存放运行时创建(new)的对象。 栈区: 5、栈是只有一个出入口的队列,即后进先出(First In Last Out),先分配的内存必定后释放。一般由系统自动分配,存放函数的参数值,局部变量等,自动清除。 堆是全局的,堆栈是每个函数进入的时候分一小块,函数返回的时候就释放了,静态和全局变量,new 得到的变量,都放在堆中,局部变量放在堆栈中,所以函数返回,局部变量就全没了。 6.栈:(基本数据类型变量、对象的引用变量) 基本数据类型的变量(int、short、long、byte、float、double、boolean、char等)以及对象的引用变量,其内存分配在栈上,变量出了作用域就会自动释放。 栈内存的主要作用是存放基本数据类型和引用变量。栈的内存管理是通过栈的"后进先出

Java 堆栈内存的理解

匿名 (未验证) 提交于 2019-12-02 21:52:03
Java中变量在内存中的分配 1). 类变量(static修饰的变量):在程序加载时系统就为它在堆中开辟了内存,堆中的内存地址存放于栈以便高速访问。静态变量的生命周期―一直持续到整个“系统”关闭 3). 局部变量:局部变量,由声明在某方法,或某代码段里(比如for循环),执行到它的时候在堆中开辟内存,当局变量一旦脱离作用域,内存立即释放 堆内存 什么是堆内存? 堆内存是java内存中的一种,它的作用是用于存储java中的对象和数组,当我们new一个对象或者创建一个数组的时候,就会在堆内存中开辟一段空间给它,用于存放。 堆内存的特点是什么? 第一点:堆其实可以类似的看做是管道,或者说是平时去排队买票的情况差不多,所以堆内存的特点就是:先进先出,后进后出,也就是你先排队好,你先买票。 第二点:堆可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,但缺点是,由于要在运行时动态分配内存,存取速度较慢。 new对象在堆中如何分配? 由Java虚拟机的自动垃圾回收器来管理。 栈内存 栈内存是Java的另一种内存,主要是用来执行程序用的,比如:基本类型的变量和对象的引用变量 栈内存的特点 第一点:栈内存就好像一个矿泉水瓶,往里面放入东西,那马先放入的沉入底部,所以它的特点是:先进后出,后进先出 第二点:存取速度比堆要快,仅次于寄存器,栈数据可以共享,但缺点是

JAVA堆栈图解

匿名 (未验证) 提交于 2019-12-02 21:38:03
转自: http://www.iteye.com/topic/634530 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(对象可能在常量池里)(字符串常量对象存放在常量池中。) 3. 堆:存放所有new出来的对象。 4. 静态域:存放静态成员(static定义的) 5. 常量池:存放字符串常量和基本类型常量(public static final)。有时,在 嵌入式 系统中,常量本身会和其他部分分割离开(由于版权等其他原因),所以在这种情况下,可以选择将其放在ROM中 。 6. 非RAM存储:硬盘等永久存储空间 这里我们主要关心栈,堆和常量池,对于栈和常量池中的对象可以共享,对于堆中的对象不可以共享。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。堆中的对象的由垃圾回收器负责回收,因此大小和生命周期不需要确定,具有很大的灵活性。 对于字符串:其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。 如以下代码: 这里解释一下黄色这3个箭头