既然Lua虚拟机模拟的是CPU的运作,那么Lua模拟的就是内存的角色.在Lua内部,参数的传递是通过Lua,同时Lua与C等外部进行交互的时候也是使用的.,先关注的是Lua的分配,管理和相关的数据结构.lua虚拟机在初始化创建lua_State结构体时,会走到stack_init函数中,这个函数主要就是对Lua和CallInfo数组的初始化:static void stack_init
转载 2024-03-07 12:35:01
194阅读
在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习。我的使命就是过滤掉大量的无效信息,将知识体系化,以短平快的方式直达问题本质,把大家从大海捞针的痛苦中解脱出来。 文章目录1 问题引入2 问题分析定位2.1 -fstack-protector-all只适用于泄露2.1.1 监控泄露2.1.2 无法监控空间不足
转载 2024-03-31 08:55:32
115阅读
物理内存:内存条,8G 16G虚拟内存:由物理内存映射而来,4G 虚拟内存 = 内核空间(1G)+用户空间(3G) 用户空间分为以下几个区域:、堆、数据段(静态区/全局区)、代码段、不可访问区域 1、空间,又称堆栈,所有的局部变量都是存放在空间中,包括函数的形参,是向下增长的,的空间随着进程的运行而变化,最大可达8M(默认)(可通过uli
文章目录与队列对比和队列的存储结构的存储结构1.的顺序存储结构2. 的链式存储结构队列的存储结构1. 队列的顺序存储结构2. 循环队列3. 队列的链式存储 与队列对比1. 什么是呢?小时候我们玩过玩具枪就知道,就是类似于枪的弹夹,每装入一颗子弹,子弹就会往弹夹底部下去,但当你打子弹出来的时候发现,是从你最后放入弹夹的子弹开始依次打出的。还有网页的后退、word、ps中的“撤销”
lua这么久了,也知道怎么样用lua来实现所谓的面向对象。下面这段代码是我常用来new一个新实例对象的:local Object = {a = 123} function Object:new (data) local data = data or {} setmetatable(data, {__index = self}) return data en
转载 2024-04-22 20:37:39
42阅读
Lua中设计""的目的就是解决Lua与C的通信。 无论是Lua到C,还是C到Lua,所有的数据交换都需要通过""来完成,此外还可以用""来保存一些中间结果。 ""解决了Lua和C语言之间存在的两大差异:         [1]. lua自带垃圾回收机制,而C需要手动显
转载 2024-02-26 08:55:55
74阅读
.1             内存申请:需要多少空间就给多少空间,不需要通过系统调用去扩展顶指针。当进程采取压动作后,顶指针减少,如果进程访问相应内存时会触发页故障,触发linux内核扩展所在的内存空间。由于不涉及系统调用,所以段内存的扩展要比对内存扩展更
一、1、是一种有特殊访问方式的存储空间,最后进去的数据最先出去,Last In First Out(LIFO). 2、8086CPU提供入(PUSH)和出(POP)的操作,段最大64KB。 3、8086中存放数据由高地址到低地址,且对于16位的数据,高地址存高8位,低地址存第8位。 4、顶的地址由SS:SP两个寄存器决定,SS是存放的段地址,SP是的偏移地址。SS:SP无论何时,
转载 2024-10-24 19:33:40
9阅读
的简介是一种线性的逻辑结构,是操作受限的线性表,可依赖数组和链表这两种物理结构实现,是一种FILO的结构。以下是生活中遇到的的结构:   的形式化定义为(Stack)简记为 S,是一个二元组,顾定义为S = (D, R)其中:D 是数据元素的有限集合;R 是数据元素之间关系的有限集合。 顶指针保存索引的下标,因此空时候top=-1分为:顺序
区数组**Stack.h中的代码:****Stack.c中的内容**Test.c链式**Stack.h****Stack.c****Test.c**习题: 区在C/C++中有两种。 1,一种是数据结构中的,和之前的链表一样,只是一种特殊的线性表,但不同的是,他只允许在在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为顶,另一端称为底。中的数据元素遵守
set,bitset 的一个应用实例——数据结构和比较算法 问题描述: 有近30万个vector <int>(每个vector <int>中的值为0~179),如: vector < vector < int >> a; a[ 0 ] = {0,3,179} ;
转载 8月前
23阅读
最近实现了一个http的接口 ~ http的方式,访问结果为json nginx做负载,web分离,url转发 ~tornado做数据操作和异步调用lua的接口 ~memcached做session的共享 (为啥不用redis做session,一方面是为了不和redis有kv冲突,服务器的中断冗余,更主要的方面是用redis存储session我没有做出来,郁闷呀。。。。)redis做kv数据库和队
转载 2024-08-08 21:31:58
39阅读
在《JVM笔记: JVM内存模型》 中对java虚拟机进行了简单的介绍。这一篇文章主要是对java虚拟机进行详细的介绍。java虚拟机是线程私有的,它的生命周期与线程相同。虚拟机描述的是java方法执行的线程内存模型,每个方法被执行的时候,java虚拟机都会同步创建一个帧用于存储局部变量表、操作数、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个帧在虚拟机中从
一、函数原型的格式如下:[作用域][函数的链接规范]返回值类型[函数的调用规范]函数名(类型1[形参名],类型2[形参名],...)函数的参数压顺序与其中的  函数的调用规范  有关系,函数的调用规范就是描述参数是怎么传递的和由谁平衡堆栈的,当然还有返回值。编译出来的c/c++程式的参数压顺序只和编译器相关!二、函数调用约定的几种类型__stdcall,__cdecl,__
转载 2024-09-02 16:10:18
93阅读
printf() 函数压方式   C语言,C++函数调用压方式取决与编译器。 但是一般编译器是右序压的。 下面介绍一下C 语言是如何右序压的: 如下函数: 一般人会认为输出结果是: #include <stdio.h> int main() { int a = 3; printf("%d,%d\n",a++,a++); p
转载 2024-05-25 17:33:58
70阅读
(一)通过一个简单的例子来看一下userdata的用法:写一个C的Lua库,让Lua能够访问C的数组,借助userdata来实现。(1)VS中新建一个DLL工程,设置好lua库的包含目录、链接库;(2)新建一个源文件main.cpp,代码如下: #include <stdio.h> #include <string.h> extern "C" { #inc
转载 2024-04-15 12:25:17
111阅读
java的内存需要划分成为5个部分: 1、(Stack ):存放的都是方法中的局部变量。方法的运行一定要在当中运行 局部变量:方法的参数,或者是方法{}内部的变量 作用域:一旦超出作用域,立刻从占内存当中消失 2、堆(Heap):凡是new出来的东西,都放在堆当中 堆内存当中的东西都有一个16进制的地址值 堆内存当
转载 2023-06-06 19:46:27
559阅读
Java对象的大小基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:Object ob = new Object();这样在程序中完成了一个Java对象的生命,但是它所占的空间为:4byte+8byte。4byte是上面部分所说的Ja
转载 2023-09-21 11:13:18
121阅读
堆空间堆内存为线程共享,空间不足时抛出OutOfMemoryError。堆区域表示运行时数据区域,为所有类实例和阵列分配内存,虚拟机启动期间创建。对象堆存储由JVM GC管理,堆大小可以固定,也可以是动态的(基于系统配置),堆内存不必是连续的。Java虚拟机实现允许对堆初始大小进行控制,动态扩展或收缩。在堆空间中创建的对象具有全局访问权限,可从应用程序任何位置引用。内存空间大小可以调整,空间不
堆栈可以增长多少?您可以使用名为ss的VM选项来调整最大堆栈大小. VM选项通常使用-X {option}传递.因此,您可以使用java -Xss1M将堆栈大小的最大值设置为1M.每个线程至少有一个堆栈.一些Java虚拟机(JVM)将Java堆栈(Java方法调用)和本机堆栈(VM中的本机方法调用)放入一个堆栈中,并使用Managed to Native Frame(称为M2NFrame)执行堆栈
  • 1
  • 2
  • 3
  • 4
  • 5