代码编织梦想

C语言/C++ 堆栈工作机制-爱代码爱编程

来源:https://segmentfault.com/a/1190000038292644 前言 我们经常会讨论这样的问题:什么时候数据存储在堆栈 (Stack) 中,什么时候数据存储在堆 (Heap) 中。我们知道,局部变量是存储在堆栈中的;debug 时,查看堆栈可以知道函数的调用顺序;函数调用时传递参数,事实上是把参

Python 垃圾回收机制详解-爱代码爱编程

垃圾回收机制:GC机制 在计算机科学中,垃圾回收(英语:Garbage Collection,缩写为GC)是指一种自动的存储器管理机制。当某个程序占用的一部分内存空间不再被这个程序访问时,这个程序会借助垃圾回收算法向操作系统归还这部分内存空间。垃圾回收器可以减轻程序员的负担,也减少程序中的错误。垃圾回收最早起源于LISP语言。目前许多语言如 Pyt

Linux 内存管理 | 地址映射:分段、分页、段页-爱代码爱编程

文章目录 分段分页多级页表快表(TLB)段页式Linux Linux 内存管理 | 物理内存管理:内存碎片、伙伴系统、slab分配器Linux 内存管理 | 虚拟内存管理:虚拟内存空间、虚拟内存分配 在前两篇博客中,我介绍了虚拟内存与物理内存的管理方式,那么对于操作系统来说,它是如何管理它们两个之间的关系的呢?如何进行地址的映射呢?

STL alloc源码分析 sgi-2.91版本 (一)-爱代码爱编程

先理解分配器原理->内存分配,再看源码分析。 文章目录 一级分配器simple_alloc二级分配器alloc(主要分析)allocate函数deallocate函数 一级分配器 当二级分配器分配内存失败时再调用一级分配器,4.9版本后去掉一级分配器,本文章主要分析二级分配器的内存池机制。 //一级分配器 template <in

Linux 内存管理 | 虚拟内存管理:虚拟内存空间、虚拟内存分配-爱代码爱编程

文章目录 虚拟内存空间用户空间内核空间用户空间内存分配malloc内核空间内存分配kmallocvmalloc Linux 内存管理 | 物理内存管理:内存碎片、伙伴系统、slab分配器 在上一篇博客中我介绍了Linux中对于物理内存的管理方式,这次再来介绍一下Linux对虚拟内存的管理方式 虚拟内存空间 即使是在现代,内存依旧是一项宝贵的

iOS底层探索--内存管理(下)-爱代码爱编程

iOS内存管理(上)简单的说了下retain、release和dealloc。不过关于内存管理还有个比较重要的东西autoreleasepool,也是兄弟们常说的自动释放池作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:196800191,加群密码:112233,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试

2.Linux内存管理----内存动态申请、释放-爱代码爱编程

文章目录 一、内核态、用户态的内存申请和释放 二、内核内存申请api 三、进程申请内存的过程 四、OOM(内存溢出:Out of Memory) 一、内核态、用户态的内存申请和释放     Linux最底层的物理内存是通过buddy算法进行管理的,但是buddy的最小单位为页,如果我们想申请一个字节的时候,该怎么办。

iOS底层探索--内存管理(上)-爱代码爱编程

兄弟们,最近实在是太忙了。不过~我又回来继续探索了。 内存管理这个名词,我相信所有的iOS工程师都听说过,也是大多数兄弟们,面试最头疼的,今天!小谷带大家走一波源码。希望对大家有所帮助。 关于内存管理,大家都会想到,ARC/MRC、retain、release、dealloc、autorelease。今天就浅谈一波。不对的地方,我在查源码找找,哈哈~

STL alloc分配内存原理-爱代码爱编程

图片来自侯捷老师的课程 alloc (1)分配器分配内存,#0号分配8字节,#1号分配16字节,#2分配24字节,以此类推… (2)每次分配出20个块来存储数据,再额外分配20个块作为备用池(3)需要字节不一样时(此时需要64字节),从备用池切割,从20块变为10块来适配64字节大小。 (4)无备用池可用,调用malloc获得内存,Roundu

大数据理论篇 No.8-聊聊Flink中TaskManager默认的G1垃圾回收器-爱代码爱编程

第1章 先看源码 在Flink源码TaskManager启动的脚本中,可以看到这样一个JVM参数设置,当用户没有配置FLINK_ENV_JAVA_OPTS和FLINK_ENV_JAVA_OPTS_TM时,Flink默认会使用G1垃圾回收器对TaskManager进行垃圾回收。 那么G1垃圾回收器到底是一个怎样的回收器?有什么优势?Flink为什么默

使用memcpy()时报错-爱代码爱编程

找了两个小时的问题,记录一下, 在ROS下usb_cam节点下添加了新的去畸变函数,并将其发布成topic,但是在实际运行的时候,有时候会出现段错误,debug模式提示如下: __memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:238 可以定位到

iOS内存相关的知识点整理-爱代码爱编程

一、原起 iOS的内存相关知识是我们开发iOS APP的基石之一,也是面试中必然会问的问题。内存知识的融会贯通,与及内存相关问题的解决,是iOS开发者必须要掌握的。 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是我的iOS交流圈: 不管你是小白还是大牛欢迎入驻!! 分享内容包括逆向安防、算法、架构设计、多线程,网络进阶,还有底层、音

JAVA基础之JVM垃圾回收简单浅析-爱代码爱编程

一、为什么需要垃圾回收 如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。 二、哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象

C 实现高性能内存池-爱代码爱编程

版权 一、概述在 C/C 中,内存管理是一个非常棘手的问题,我们在编写一个程序的时候几乎不可避免的要遇到内存的分配逻辑,这时候随之而来的有这样一些问题:是否有足够的内存可供分配? 分配失败了怎么办? 如何管理自身的内存使用情况? 等

C/C++构架师VIP第二期-爱代码爱编程

课程目录: 第01讲 面向对象程序设计概述 第02讲 类和对象-01 第03讲 类和对象-02 第04讲 剖析构造函数和析构函数 第05讲 继承与派生类-01 第06讲 继承与派生类-02 第07讲 虚函数与纯虚函数 第08讲 函数重载与运算符重载 第09讲 C 异常处理机制 第10讲 C 输入输出文件流 第11讲 名字空间-模板 第12讲 高校图书管理应

有这一篇就够了,带你理解嵌入式内存各种概念-爱代码爱编程

各位做嵌入式开发的小伙伴有没有这种困扰,每当开会讨论开发板性能,各种参数配置,领导们侃侃而谈的rom、ram、ddr、nand-flash等一系列装X单词…到底是些什么东西,你都了解吗,赶紧来熟悉一波吧 内存 什么是内存?在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器才有记忆功能,才

malloc/calloc/realloc区别与联系-爱代码爱编程

malloc/calloc/realloc区别与联系 malloc/calloc/realloc和free介绍: 1 malloc函数 定义与声明: 在堆上,分配n个字节,并返回void指针类型。其函数声明如下: void * malloc(int n); 参数释义: n:申请空间大小(单个类型大小*总个数)//类型大小为字节 函数详述:

golang内存逃逸分析-爱代码爱编程

逃逸分析在编译阶段完成,目的是决定内存分配地址是栈还是堆:编译时通过 go build -gcflags=-m 可以查看逃逸对象 1、关于堆和栈  栈可以简单理解成一次函数调用内部申请到的内存,它们会随着函数的返回把内存还给系统。 在栈上申请的内存 :函数返回直接释放,不会引起垃圾回收,对性能没有影响。 在堆上申请的对象生命周期可以超出函

linux系统堆、栈及内存分配、CPU寄存器-爱代码爱编程

堆和栈: 栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小. 堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们. 全局,静态和常量是分配在数据区中的。数据

【Linux】页表的实现与地址转换-爱代码爱编程

页表的实现与地址转换 页表是软件实现的,但是页表的查找是MMU完成的,所以硬件定义了页表的实现规则,软件做的只有选择页表的级别,是否使用huge page以及填充对应的权限标志位。每个进程都拥有一个自己的页表,在linux中,有一个页目录数组,这是分页机制的最高层,每个进程的页表对应其中的一个页目录项,通过cr3寄存器(存放页目录项的物理地址)可以访问。