会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Ethan-Code
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
2022年8月24日
内存管理——malloc的内存分配
摘要: malloc分配内存的方式 学C语言时我们知道,malloc是动态内存分配,也就是在程序运行执行到malloc函数时才会从堆上分配指定的内存大小。 首先要知道Linux的把内存分为6个区:栈区、文件映射区、堆区、BSS区、数据区、代码区。 分区只在虚拟内存上进行逻辑划分,物理内存上不存在逻辑分区的概
阅读全文
posted @ 2022-08-24 20:08 Ethan'Chen
阅读(4688)
评论(0)
推荐(0)
2022年8月23日
内存管理——分段和分页的区别
摘要: 分段与分页的区别 分段: 分页: 分段和分页的工作方式相似,都是非连续存储。 分段的逻辑地址=段号+段内偏移。段表存放段描述符。段描述符=段基址+段界限。物理地址=段基址+段内偏移。 分页的虚拟地址=页号+页内偏移。页表存放页面映射。页面映射=虚拟页号+物理页号。物理地址=物理页号+页内偏移。 但是
阅读全文
posted @ 2022-08-23 21:16 Ethan'Chen
阅读(18)
评论(0)
推荐(0)
2022年8月22日
内存管理——虚拟内存、分段、分页机制
摘要: 虚拟内存 为什么要有虚拟内存? 让每个进程都有独立的内存空间,每个进程都有自己的私有页表,提供一个可以执行多进程的环境。 利用程序运行局部性原理,允许进程的内存空间超过物理内存大小。 页表中维护着页的权限属性,使内存访问更安全。 假如没有虚拟内存,则会有进程空间不隔离的问题,比如进程A会改写进程B的
阅读全文
posted @ 2022-08-22 16:04 Ethan'Chen
阅读(1519)
评论(0)
推荐(0)
KMP
摘要: # 字符串匹配——KMP算法 1. 算法原理 在暴力匹配过程中,当遇到匹配失败的字符时,暴力法做法是将模式串后移一位,从头开始匹配,直到成功匹配下一位字符。 KMP算法的核心思想就是:充分利用模式串自身的信息,在每次匹配失败之后不需要重复匹配之前已经成功匹配的字符,快速定位到下一个需要匹配的字符,从
阅读全文
posted @ 2022-08-22 14:16 Ethan'Chen
阅读(216)
评论(0)
推荐(0)
二分查找
摘要: 二分查找 二分查找分为整数二分和小数二分,其中整数二分涉及的边界问题比较多,理解起来相对复杂。 # 整数二分 如果可以找到一个性质,可以把区间一分为二,一半满足性质一半不满足。二分可以找到这个性质的边界,可以是①也可以是②。 这里这个分界点①和②就分两种情况讨论。 # 寻找边界点①——右边界 mid
阅读全文
posted @ 2022-08-22 14:08 Ethan'Chen
阅读(63)
评论(0)
推荐(0)
归并排序
摘要: 1. 归并排序——分治 # 算法原理 归并排序的思想就是分治,先递归分解数组,再合并数组。 将数组分解到最小之后,再往上一层两两合并两个有序的数组,最终递归返回的就是一个排好序的数组。 递归分解的时间复杂度是O(logn),合并数组的时间复杂度是O(n),因此归并排序的时间复杂度就是O(nlogn)
阅读全文
posted @ 2022-08-22 13:53 Ethan'Chen
阅读(84)
评论(0)
推荐(0)
2022年8月19日
快速排序
摘要: 1. 快速排序——分治 # 算法原理: 在给定序列找到一个点x使得x左边区间数都小于x,右边区间数都大于x # 步骤: 确定分界点 随机,可以是第一个数 调整区间 使左边都小于分界点,右边都大于分界点 递归处理左右两段 递归停止的条件if(l >= r) return;即区间里没有数或只有1个数就直
阅读全文
posted @ 2022-08-19 00:17 Ethan'Chen
阅读(87)
评论(0)
推荐(0)
上一页
1
2
公告