当前位置: 首页 > wzjs >正文

如何更改wordpress登录密码错误seo是什么意思

如何更改wordpress登录密码错误,seo是什么意思,种子搜索,大连外贸网站建设六、内存管理 本章节部分是理解后文所有编程代码题的关键,也就是代码中必然包含一系列对于内存的操作。 1、Linux内存管理机制 此部分转到教材部分自行阅读了解即可,大部分知识均在此前的操作系统、计算机硬件等科目中学习过。 2、 内存控制 写代码不…

六、内存管理

 本章节部分是理解后文所有编程代码题的关键,也就是代码中必然包含一系列对于内存的操作。

1、Linux内存管理机制

此部分转到教材部分自行阅读了解即可,大部分知识均在此前的操作系统、计算机硬件等科目中学习过。

2、 内存控制

写代码不用背头文件,直接写代码就可以。

贴出每部分函数所需的头文件,供拔高/优秀同学学习记忆:

 

内存的分配与释放


头文件:

#include<stdio.h>
#include<stdlib.h>

(1)malloc 申请内存空间

void *malloc(size_t n)

其中n为指定分配的字节数,执行成功返回内存空间首地址,失败返回NULL。

注意:申请后的内存空间未初始化,需要调用memset初始化。

同时由于此函数值类型为void型指针,因此可将返回类型转换后赋值给任意类型指针。

char * buffer;
buffer = (char * )malloc(100);

(2)calloc 申请内存空间并初始化

void *calloc(size_t n,size_t size)

适合为数组申请空间,示例:

int * buffer;
buffer = (int * )malloc(10,sizeof(int));

由于其相比malloc多出了为申请好的内存初始化的操作,所以效率比malloc低。

(3)free 释放内存

void free(void *p)

在使用malloc或calloc申请内存并使用完成后需要手动释放内存空间,否则会导致内存泄漏。

 

内存映射


头文件:

#include<unistd>
#include<sys/mman.h>

由于用户层程序不能直接访问磁盘等物理设备,需要通过操作系统预留的open、close、read、write等方法走内核层间接去访问磁盘文件,为了加快文件等数据处理速度,引入内存映射概念:

内存映射就是将文件或者其他对象映射到用户空间中,通过对映射内存区域的修改,直接反应到文件磁盘上,类似“虚拟内存与物理内存”的关系。

通俗来说,传统读写方式是经过操作系统,绕路;而内存映射则是操作系统在内核与用户态之间开出一块“空地”,在这块“空地”上执行的任何操作,在操作完毕后都会直接关联到物理设备。

内存映射就是为了提高数据交换的效率。

(4)mmap 内存映射

void *mmap(void *start,size_t length,int port,int flags,int fd, off_t offsize)

 其中:

        start:映射目标内存起始地址,通常设置为Null,由系统自动选定。

        length:映射区长度,通常为文件数据类型大小*文件最大长度,见后文示例。

        port:映射区域保护方式,即映射区允许操作权限,可通过or运算符有机结合。

       (PORT_固定 后面变化 很好背)

        PORT_EXEC—可执行

        PORT_READ—可读取

        PORT_WRITE—可被写入

        PORT_NONE—不能存取

        flags:映射区域特性,死背 -> MAP_SHARED

        MAP_SHARED:映射空间共享,即与其他所有映射这个对象的进程共享映射空间。

        调用msync或者munmap函数后更新文件。

         fd:有效的文件描述词。即为文件对象。

        offsize:被映射对象内容的起点,默认为0

(5)munmap 解除映射

int munmap(void *start,size_t length)

其中:

        start:将要释放映射区的起始地址。

        length:必须为mmap中映射区长度。若小于将会造成内存泄漏。

 

注意:前文提过,在映射空间共享的情况下,进程在映射空间对共享内容的改变不会直接写回到磁盘文件中,往往调用munmap函数后才会执行msync函数实现磁盘文件内容与共享内存区的内容一致。成功返回0,失败返回-1。

(6)msync 刷新变化

msync(void *start,size_t len, int flags)

其中:

        start:映射区的开始地址。

        len:映射区的长度。

        flags:控制回写到文件的具体方式。默认 -> MS_SYNC

        MS_SYNC:等待写操作完成后才返回

 内存映射实例:

#define MAX 10000int main(){// 打开名为"test"的文件// O_RDWR:以读写模式打开// 0064:设置文件权限(八进制),表示://   - 所有者:读写(6 = 4+2)//   - 同组用户:读(4)//   - 其他用户:无权限(0)// 返回值fd是文件描述符fd = open("test",O_RDWR,0064);// 返回值array指向映射的内存起始地址array = mmap(NULL,sizeof(int)*MAX,PORT_READ | PORT_WRITE | PORT_EXEC,MAP_SHARED,fd,0);// 遍历数组所有元素for(i=0;i<MAX;++i)++array[i];   // 每个元素值加1// 解除内存映射munmap(array,sizeof(int)*MAX);// 将映射区域的修改同步到文件msync(array,sizeof(int)*MAX,MS_SYNC);// 关闭文件描述符close(fd);return 0;}

3、内存操作

头文件:

#include<unistd>
#include<sys/mman.h>

(1)内存复制

void bcopy(const void *src,void *dest,int n)
void *memcpy(void *dest,const void *src,int n)

其中:

        src:指向源地址的指针。

        dest:指向目标地址的指针。

        n:一次复制的字节长度n。

 bcopy和memcpy的区别就是源和目的指针的先后顺序推荐使用memcpy函数。

(2)内存赋值

void bzero(void *s,int n)
void *memset(void *s,int c,size_t n)

其中:

        s:内存区域指针。

        n:向内存区域前n个字节填入0(bzero) / 字节(memset)。

        c:赋值。

bzero只能将指定内存区域赋值为0,推荐使用memset可将任意值填入内存

(3)内存查找

void *memchr(const void *s,int c,size_t n)

其中:

        s:指向内存区域首地址的指针。

        c:待查找字符。

        n:搜索范围为前n个字节,找到则返回指向该字节的指针;找不到返回0。

(4)内存比较

int memcmp(const void *s1,const void *s2,size_t n)

其中:

        s1:第一个内存区域的指针。

        s2:第二个内存区域的指针。

        n:比较区间为前n个字符。

若s2大于s1则返回值>0;反之返回值<0。

 

取内存分页大小


头文件:

#include<unistd.h>

函数:

size_t getpagesize(void)

返回值为分页大小,单位字节。

 

Linux中的内存管理机制是什么?

答:①虚拟内存管理机制:分页式/分段式/段页式存储管理+虚拟内存管理

       ②线性地址空间与物理地址管理

 什么是段页式管理方式其优点是什么?

答:

  • ​分段​​:将程序逻辑划分为多个段(如代码段、数据段、堆、栈等),每个段有独立的基址和长度,便于程序模块化管理。
  • ​分页​​:在分段的基础上,将每个段进一步划分为固定大小的页(如4KB),并通过页表映射到物理内存,提高内存利用率。

    优点:分页既能提高物理内存利用率,分段又可以提供逻辑隔离​。

线性地址如何映射到物理地址? (引申段页式管理的工作流程)​

  1. ​逻辑地址 → 线性地址(分段转换)​

    • CPU访问内存时,逻辑地址(段选择符:段内偏移)通过段描述符表(GDT/LDT)转换为线性地址(虚拟地址)。
    • 例如:CS:EIP(代码段+指令指针)转换为线性地址。
  2. ​线性地址 → 物理地址(分页转换)​

    • 线性地址通过多级页表(如x86的4级页表)映射到物理页框(Page Frame)。
    • 页表由MMU(内存管理单元)和TLB(快表)加速查找。

什么是内存泄漏?如何避免内存泄漏?

答:答案在前文叙述当中。 

内存映射相比一般的文件读/写操作有什么好处?

答:答案在前文叙述当中。 

使用mmap函数设计一段程序实现内存映射。

答:答案在前文示例中。 

使用内存操作函数完成内存复制操作。

 答:

#include <stdio.h>
#include <string.h>int main() {char src[] = "Hello, World!";char dest[20];// 复制 src 的内容到 destmemcpy(dest, src, strlen(src) + 1);printf("Copied string: %s\n", dest); // 输出: Hello, World!return 0;
}

 

未完待续....因为我也在复习..... QwQ 

 

http://www.dtcms.com/wzjs/117345.html

相关文章:

  • 珠海网站建设 金碟电脑零基础培训班
  • 彩票网站代理app拉新平台
  • 临沂网络网站建设推广软件赚钱违法吗
  • wordpress友情链接设置seo搜索引擎优化薪资水平
  • 常州专业房产网站建设百度电商平台app
  • 怎么制作博客网站刷评论网站推广
  • 网站建设 中企动力南昌正版google下载
  • 免费视频网站制作站长工具备案查询
  • 如何上传ftp网站程序太原百度快照优化排名
  • 让自己的电脑做网站的服务器目前最好的引流推广方法
  • 京东云免费建wordpressseo的工作内容
  • 做个政府网站要多少钱seo运营是什么意思
  • 网站建设中素材网站seo诊断优化方案
  • 南通seo网站诊断网站建设软件
  • 做商城网站产品怎么分布天津seo顾问
  • 服务器能放多少个网站广告公司招聘
  • 建设商城网站的书籍钱南召seo快速排名价格
  • 漂亮的手机网站模板下载百度怎么投广告
  • 新乡手机网站建设哪家专业网站推广途径
  • 文字图片一键生成器北京seo诊断
  • 做网站的公司cnfg站长之家权重
  • 成都公司注册代理优化关键词排名软件
  • 扫码登记小程序怎么做廊坊seo
  • 烟台网站建设哪家好建站工具有哪些
  • 做外贸必须关注的20个b2b网站_排名无先后网站整站优化推广方案
  • 公司网站建设素材广州百度推广排名优化
  • 网站建设合同下载关键词数据
  • 做婚恋网站有哪些推广一款app的营销方案
  • 政府办工作网站建设工作计划seo专业培训技术
  • 做网站页面大小多大荆门今日头条新闻发布