logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Linux】进程(四)——进程虚拟地址空间

本文深入讲解了进程虚拟地址空间的概念与原理。文章首先纠正了"程序内存分区"的错误说法,强调只有运行中的进程才拥有虚拟地址空间。通过代码示例展示了虚拟地址空间的具体布局,包括代码段、数据段、堆栈区等分布情况。 文章详细解释了虚拟地址与物理地址的区别:虚拟地址是操作系统为每个进程虚构的逻辑地址,而物理地址是实际硬件地址。通过fork父子进程的例子,展示了写时拷贝机制如何实现相同虚拟地址映射不同物理内存

#linux#开发语言#c语言
【Linux】进程(二)——进程状态(僵尸进程、孤儿进程)、前后台进程、进程优先级

本文摘要: 文章系统讲解了进程状态及其在Linux中的实现。基础状态包括运行态(CPU执行)、就绪态(等待调度)和阻塞态(等待事件)。阻塞本质是进程从CPU队列移至硬件等待队列,事件完成后再移回。Linux扩展了状态模型:R(运行)、S(可中断阻塞)、D(不可中断阻塞)、T(暂停)、Z(僵尸)、X(死亡)。重点分析了僵尸进程(Z态)的危害——内存泄漏,需由父进程回收task_struct。此外介绍

#linux#运维#服务器
【Linux】进程(三)——进程切换、O (1) 调度、环境变量、命令行参数

本文摘要: 底层内存基础:介绍了多字节变量的地址规则(取最小地址)和结构体偏移量计算方法,为理解内核数据结构奠定基础。 Linux进程管理机制:详细解析了Linux如何通过内嵌list_head结构体实现通用链表管理所有进程,以及进程状态切换时通过链表节点挂靠不同队列的实现原理。 O(1)调度器设计:深入剖析了Linux O(1)调度器的核心组件: 优先级数组queue[140]实现哈希定位 位图

#linux#运维#服务器
c/c++内存管理

本文介绍了C/C++内存管理的核心知识。主要内容包括:1)程序内存分区(栈、堆、代码段、数据段)及其存储内容;2)C语言动态内存管理方式(malloc/calloc/realloc/free)的使用和注意事项;3)C++特有的new/delete操作符及其与malloc/free的区别;4)定位new的用法及其在内存池中的应用;5)operator new/delete函数的作用机制。文章通过代码

#c语言#c++
C++浅谈模板

摘要:本文介绍了C++模板机制在泛型编程中的应用。首先通过交换函数的重载问题引出泛型编程概念,随后详细讲解了函数模板的语法、原理及实例化方式(隐式/显式)。文章还探讨了模板函数与普通函数的匹配优先级规则,最后介绍了类模板的定义与实例化方法。模板机制通过类型参数化实现了代码复用,使开发者能编写与类型无关的通用代码,同时保持类型安全。

#c++
C++标准模板库(STL)——string的模拟实现

C++标准模板库(STL)——string的模拟实现

#开发语言#c++
C++标准模板库(STL)——vector的使用

当插入元素后size>capacity时,空间不足,vector就会触发扩容。系统会分配一块更大的空间(按原容量的1.5或2倍扩充),并将原数据拷贝到新空间,释放旧空间。此时所有的迭代器、指针、引用都会失效,接下来我会粗略地介绍vector类一些常用成员,同时为了讲解方便,本文先以储存int类型为例介绍常用接口,如果大家想了解更多,可以点开上面的链接查阅。vector的使用和string非常相似,

#c++#开发语言
C++标准模板库(STL)——vector的模拟实现

T相当于一个类型占位符,后续使用时编译器会自动把它替换成具体类型。

#c++#开发语言
C++标准模板库(STL)——list的使用

这组接口用于正向遍历容器。

#c++#list
C++标准模板库(STL)——list的模拟实现

通过模板参数实例化,分别得到普通迭代器和 const 迭代器之前的 _list_iterator<T, Ref, Ptr> 是 “通用模板”(图纸),三个参数都是占位符。现在通过 typedef给模板传了 “具体参数”,直接生成两个 “专用迭代器类型"class listpublic://重命名变成我们熟知的普通迭代器和const迭代器//普通迭代器:Ref=T&,Ptr=T*// const迭代

#c++#list
    共 14 条
  • 1
  • 2
  • 请选择