多进程和多线程原理 fork后子进程会复制父进程的task_struct结构,并为子进程的堆栈分配物理页。理论上来说,子进程应该完整的复制父进程的堆栈以及数据空间,但是2者共享正文段。 由于一般fork后面都结着exec,所以现在的fork都在用写时复制的技术,顾明思议,就是数据段,堆栈一开始并不复 ...
分类:
编程语言 时间:
2020-01-12 13:29:36
阅读次数:
84
微信公众号: "内核小王子" 关注可了解更多关于数据库,JVM内核相关的知识; "如果你有任何疑问也可以加我pigpdong" [^1] 前言 随着微服务化,以及集群规模化,传统的日志检索,指标监控,调用链分析作为功能单一的系统,已经无法更好的帮我们分析问题,我们需要一个监控平台将他们之间的数据进行 ...
分类:
其他好文 时间:
2019-05-21 16:00:10
阅读次数:
134
环境:STM32F103C8T6,MDK5 在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞。debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看局部变量地址已经超出栈的范围,于是确定是栈溢出。如果不稍微了解一下堆栈,在开发过程中可能碰到各种奇怪 ...
分类:
其他好文 时间:
2019-04-04 13:08:17
阅读次数:
1185
缓冲区溢出是一类特殊的数组及数字边界错误。大多数缓冲区溢出的发生是由于输入超出了所分配的空间大小,然而数据还是被写入了,并且覆盖了分配空间以外的内存。 堆栈溢出:堆栈溢出是一种写入的数据超出了给堆栈分配的缓冲区大小而发生的溢出。 整型溢出:用来保存某个确定数值范围的特定数据类型或CPU寄存器,当分配 ...
分类:
其他好文 时间:
2019-03-25 14:41:19
阅读次数:
167
1,静态变量static :static修饰的局部变量,其数值位上一次程序调用后的值。 2,变量同名是,局部变量优先。 3, 堆 :常用于动态分配和释放程序所使用的对象。 { 1. 事先不知道程序所需要对象的数量和大小 2.对象太大,不适合使用堆栈分配器 } 堆使用运行期间分配给代码和堆栈以外的部分 ...
分类:
编程语言 时间:
2018-10-04 18:22:35
阅读次数:
238
const与#define最大的差别,Const在堆栈分配了空间,而#define只是把具体数值 直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程 序中确确实实的存在可以被调用、传递。而#define常量则是一个Compile-Time概 念,它的生命周期止于编译 ...
分类:
其他好文 时间:
2017-10-05 23:09:34
阅读次数:
158
C#基础语法中得数组,定义就是:数组是一种数据结构,包含同一个类型的多个元素。从CLR的角度来看,首先数组是引用类型,堆栈分配属于分配于堆上,其次数组在内存中是连续的存储的,所以索引速度很快,而且赋值与修改元素也很简单。可以利用偏移地址访问元素,时间复杂度为O(1);可以用折半查找法查找元素,效率高 ...
分类:
编程语言 时间:
2017-08-27 17:07:58
阅读次数:
369
C#是强类型语言,因此每个变量和对象都必须具有声明类型。数据类型可描述为内置数据类型(如int或char),用户定义数据类型(如class或interface)。数据类型还可以定义为值类型(用于存储值),引用类型(用于存储对实际数据的引用)。 值类型 值类型的内容存储在堆栈分配的内存中,如果一个变量 ...
操作系统堆栈: 分配由编译器自己主动和自己主动释放。对应于堆栈的函数。参数存储功能值、函数调用结束后完成值和局部变量的函数体内。段内存空间。其操作和组织方式与数据结构中的栈十分相似。栈是为了运行线程留出的内存空间。当调用函数时创建栈。当函数运行完毕,栈就被回收了。操作系统中的堆: 由程序猿手动进行....
分类:
编程语言 时间:
2015-07-25 14:58:40
阅读次数:
129
将msdn上vs2013的编译器选项记载一下,我不创造文章,我只是大自然的搬运工:1./STACK(堆栈分配)/STACK:reserve[,commit]/STACK 选项设置堆栈的大小(以字节为单位)。此选项仅在生成 .exe 文件时使用。该选项指定虚拟内存中的总的堆栈分配。默认堆栈大小为 1 ...
分类:
其他好文 时间:
2015-07-24 18:13:09
阅读次数:
576