• 2024-07-02九浅一深Jemalloc5.3.0 -- ③浅*tcache
    目前市面上有不少分析Jemalloc老版本的博文,但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析最新release版本Jemalloc5.3.0的实现。另外,单讲实现代码是极其枯燥的,我将尽量每个原理知识点都用一个简简单
  • 2024-07-01heap
    堆块:chunk堆是以一个个的堆块构成的,这些堆块就叫chunkchunk的大小是8字节对齐,但是一个堆块的具体大小是16字节对齐的,比如一个堆块只能是0x40,0x50,0x60不会是0x48这样的数据其中一个堆块的header头部字节占16字节大小,也就是0x10字节64位程序下的最小长度是32字节大小的这里
  • 2024-06-30c语言malloc、calloc 和 realloc动态分配内存函数的区别
    c语言malloc、calloc和realloc动态分配内存函数的区别malloc、calloc和realloc是C语言中用于动态内存分配的三个重要函数,它们之间有一些关键的区别。以下是这三个函数的区别,以分点表示和归纳的形式进行解释:内存来源和初始化:malloc:在堆上分配指定大小的内存块,但不进行初始化
  • 2024-06-22C语言---动态内存管理
    1.为什么要有动态内存分配指针+结构体+动态内存管理是学习数据结构的非常重要的知识intmain(){intn=0;//向内存申请一块空间---一个整型4个字节intarr[10]={0};//向内存中申请一块连续的空间--10个整型--40个字节return0;}这两种但是上述
  • 2024-06-21【C语言】16.动态内存管理
    文章目录1.为什么要有动态内存分配2.malloc和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常见的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问4.3对⾮动态开辟内存使⽤free释放4.4使⽤free释放⼀块动态开辟内存的⼀部
  • 2024-06-21Malloc Lab: Writing a Dynamic Storage Allocator
    18-213/15-613,Summer2024MallocLab:WritingaDynamicStorageAllocatorAssigned:Thursday,June20,2024Thislabrequiressubmittingtwoversionsofyourcode:oneasaninitialcheckpoint,andthesecondasyourfinalversion.Theduedatesofeachp
  • 2024-06-17C++的动态内存管理
    C++的new和delete一、C与C++的内存管理以及分配二、C++中的new和delete1、new/new[]和delete/delete[]的用法2、new和delete对于内置类型和自定义类型的区别三、new和delete的底层原理1、全局的operatornew和全局的operatordelete2、对于内置类型和自定义类型两个全局
  • 2024-06-16【C++】C/C++内存管理
    C/C++内存管理C/C++内存分布C语言中的内存管理方式C++中内存管理方式内置类型自定义类型operatornew和operatordelete函数new和delete实现原理定位new表达式(placement-new)malloc/free与new/delete的区别内存泄漏何为内存泄漏内存泄漏的分类如何检测内存泄漏如何避免内
  • 2024-06-11glibc函数malloc的工作原理
    glibc提供了malloc函数来动态分配内存,我们只知道调用malloc会返回给我们一个指针,指向一块内存空间或NULL,那么malloc的工作原理是什么呢?概述:1.小于128kB的空间,使用内存池(在堆上)或brk或sbrk系统调用在堆上分配2.大于128kB的空间,使用mmap在文件映射区分配+----------------
  • 2024-06-11堆基础知识
    arenachunk通俗地说,一块由分配器分配的内存块叫做一个chunk,包含了元数据和用户数据。具体一点,chunk完整定义如下:structmalloc_chunk{INTERNAL_SIZE_Tmchunk_prev_size;/*Sizeofpreviouschunk(iffree).*/INTERNAL_SIZE_Tmchunk_size;/
  • 2024-06-11C语言笔记第14篇:动态内存管理
     1、为什么要有动态内存分配我们已经掌握的内存开辟方式有:创建变量charc=0;inta=0;intarr[10]={0};但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的数组在声明的时候,必须指定数组的长度,数组空间一旦确定了大小不能调整但是对于空间的需求,不仅仅是
  • 2024-06-10C语言——使用函数创建动态内存
    一、堆和栈的区别1)栈(Stack):栈是一种自动分配和释放内存的数据结构,存储函数的参数值、局部变量的值等。栈的特点是后进先出,即最后进入的数据最先出来,类似于我们堆盘子一样。栈的大小和生命周期是由系统自动管理的,不需要程序员手动释放。2)堆(Heap):堆是由程序员手动分配和释
  • 2024-06-10C&C++内存管理【new和delete操作符的详细分析】【常见面试题】
    C/C++内存管理1.C/C++内存分布我们先来看一段代码,来了解一下C/C++中的数据内存分布。#include<stdlib.h>intglobalVar=1;staticintstaticGlobalVar=1;//比globalVar还要先销毁,同一个文件下后定义的先析构//全局变量存在数据段(静态区)但是链接方式和静
  • 2024-06-10深入理解 C++ 动态内存管理:new vs malloc
    概述new/delete 是C++的关键字,需要编译器支持。malloc/free 是库函数,需要头文件支持。使用 new 申请内存分配时无需指定内存块大小,编译器会自动计算。而 malloc 需要明确指定所需内存的大小。new 会返回对象类型的指针,类型安全。而 malloc 返回 void*,需要进行强制
  • 2024-06-09零基础非科班也能掌握的C语言知识19 动态内存管理
    动态内存管理1.为什么要有动态内存分配2.malloc和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常见的动态内存的错误4.1对NULL指针的解引用操作4.2对动态开辟空间的越界访问4.3对非动态内存开辟的空间free4.4使用free释放⼀块动态开辟内存的⼀部分4
  • 2024-06-08C语言详解(动态内存管理)1
    Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎~~
  • 2024-06-07C语言:(动态内存管理)
    目录动态内存有什么用呢malloc函数开辟失败示范free函数calloc函数realloc函数当然realooc也可以开辟空间常⻅的动态内存的错误 对NULL指针的解引⽤操作对动态内存开辟的空间越界访问对⾮动态开辟内存使⽤free释放使⽤free释放⼀块动态开辟内存的⼀部分对同一
  • 2024-06-062024-05-27_枚举作业
    1.以下关于枚举的说法,哪个是正确的?()A.枚举类型可以具有浮点数作为枚举值。B.枚举类型在内存中存储为整数。C.枚举类型可以包含字符串作为枚举值。D.枚举类型不能作为函数的参数传递。解析:选择B项,枚举类型在内存中存储为整数,其他选项都是不正确的。2.下面代码的结果是:(
  • 2024-06-05C之动态内存管理(动态内存开辟与调整等)
    目录1.为什么要有动态内存分配2.malloc、calloc、realloc和freemalloc:calloc:realloc:free:3.常见的动态内存的错误3.1:对NULL指针的解引用操作3.2:对动态开辟空间的越界访问3.3:对非动态开辟的内存使用free函数释放3.4:使用free释放一块动态开辟内存的一部分3.5:对同一块
  • 2024-06-04Linux学习笔记6 进程角度看内存泄露
    一,从进程角度看堆区内存申请与释放问题1,c语言中的内存泄漏内存溢出:申请内存时,没用足够的内存可以使用。 内存泄露:严格来说,只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏                宽泛的讲,实际情况中很多时候一些不太好的实践
  • 2024-06-03[FreeRTOS 基础知识] 堆
    文章目录堆的概念使用C语言实现堆堆空间解析堆的概念所谓的堆就是一块空间的内存,可以来管理这块内存。从这块内存中取出一部分然后再释放回去。使用C语言实现堆charheap_buf[1024];//定义一个堆空间intpos=0;//当前位
  • 2024-06-02【C语言进阶】--- 动态内存管理
    动态内存管理函数1.malloc函数void*malloc(size_tsize);功能:向堆区的空间中申请一块大小为size个字节的空间,返回指向这块空间的指针如果开辟失败会返回一个NULL指针,因此要检查malloc的返回值,避免返回NULL指针后再访问空指针malloc申请的空间,程序退出后会还给操作系统
  • 2024-06-02C语言之动态内存管理
    目录一、什么是动态内存分配二、malloc和free三、calloc和realloc四、常见的动态内存的错误 五、柔性数组六、总结 一、什么是动态内存分配动态内存分配是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。与静态内存分配不同,动态内存分配不需要
  • 2024-06-01【C++】内存管理
    文章目录1.回顾C/C++的内存管理2.C++内存管理方式2.1new/delete对于内置类型2.2new/delete对于自定义2.3operatornew与operatordelete函数2.4new和delete的实现原理2.5定位new表达式3.常见面试题1.回顾C/C++的内存管理首先,我们来回顾一下内存中的区域划分
  • 2024-06-01hook的几种方式及原理学习
    原文概述对于大型的工程项目,依赖许多人的配合,包含大量不同的代码库与服务,有的我们能够访问程序的源代码,有的可以访问程序的可重定位文件,有的可以访问到可执行文件及其环境,假如我们想在在不同的层面改变或者添加一些逻辑,操作系统、编译器以及程序语言、代码库等都提供了一些机制