【前言】前面有一篇文章介绍了堆区栈区的区别。栈区的核心主要集中在操作一个栈结构,一般由操作系统维护。堆区,主要是我们程序员来维护,核心就是动态内存分配。 一、动态内存分配器 虽然低级的mmap和munmap函数来创建和删除虚拟内存区域,但是C程序运行时在需要额外的存储空间时,一般会使用动态存储器分配 ...
分类:
其他好文 时间:
2018-06-16 14:30:45
阅读次数:
258
一、栈的顺序存储的一个很大的缺陷就是必须事先确定数组存储空间大小,万一不够用了,就要用编程手段来扩展数组的容量,非常麻烦。 二、对于一个栈,也只能尽量考虑周全,设计出合适大小的数组来处理;但是对于两个相同类型的栈,可以做到最大限度地利用其事先开辟的存储空间来进行操作。 三、如果有两个相同类型的栈,为 ...
分类:
其他好文 时间:
2018-06-14 18:23:33
阅读次数:
274
题目:从上往下打印二叉树 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印 思路:考察二叉树的 层序遍历,通常借助使用一个队列或一个栈来完成 若是要求每层数据从左到右保存则用队列,若是要求每层数据从右到左保存则用栈(这种要求一般出现在“之”字型遍历 二叉树的题上) 题目本身好像要求只能 ...
分类:
其他好文 时间:
2018-06-12 16:24:55
阅读次数:
186
Java虚拟机运行时会把内存划分为如下数据区域: 1.程序计数器:可以看作是当前程序执行字节码的行号指示器,任何时候,一个处理器只会执行一条线程命令,所以每个线程都有一个独立的程序计数器。 2.虚拟机栈:也是线程私有的,生命周期与线程相同。每个方法运行时都会创建一个栈帧用于存储局部变量表、操作数栈、 ...
分类:
其他好文 时间:
2018-06-10 15:16:15
阅读次数:
164
一、Java 虚拟机内存原型 寄存器:我们在程序中无法控制。 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。 堆:存放用 new 产生的数据。 静态域:存放在对象中用 static 定义的静态成员。 常量池:存放常量。 非 RAM 存储:硬盘等永久存储空间。 二、常量池 ...
分类:
编程语言 时间:
2018-06-07 21:52:54
阅读次数:
171
JVM逃逸分析 JVM有栈、堆、方法区、本地栈等组成 栈:每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态连接、方法出口等信息。每个方法被调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。 堆:当实例化对象时,会把对象分配到堆中,然后把指向该堆的引用压入 ...
分类:
其他好文 时间:
2018-06-03 12:42:56
阅读次数:
248
1.先序遍历:根节点->左子树->右子树 2.中序遍历:左子树->根节点->右子树 3.后序遍历:左子树->右子树->根节点 4.按层遍历:从上到下、从左到右按层遍历 5.二叉树节点个数 6.二叉树的最大深度 ...
分类:
编程语言 时间:
2018-06-03 01:01:22
阅读次数:
237
用一个栈来存储奇数次的节点,奇数次先入栈,到偶数次出栈,注意下标。 ...
分类:
其他好文 时间:
2018-06-01 11:42:36
阅读次数:
161
题面 "传送门" 虚树 把跟询问有关的点拿出来建树,为了方便树$DP$ 在$LCA$处要合并答案,那么把这些点的$LCA$也拿出来 做法:把点按$dfs$序排列,然后求出相邻两个点的$LCA$,把这些点建一个虚树,维护一个栈就好了 Sol 虚树+树$DP$ cpp include define IL ...
分类:
其他好文 时间:
2018-05-31 00:31:06
阅读次数:
179
#include<stdio.h> #include<string.h> #include<stdlib.h> // 写一个判断的括号是否匹配的函数 int MatchCheck(char a[],int len){ int flag = 0; char s[10000]; int top,i; c ...
分类:
其他好文 时间:
2018-05-25 14:00:27
阅读次数:
127