memset:往指定的某段连续内存填充某个数据
#include <string.h>
void *memset(void *s, int c, size_t n);
s:指定的起始内存首地址
c:填入的内容
n:指定内存的大小
返回值: 返回s
bzero:使某段连续内存清0
#include <strings.h>
void bzero(void *s, size_t n);
s:指定的内存
n:指定内存的大小
mmap:内存映射
将一个设备或者是一段物理内存直接映射成为一个虚拟内存中的地址,可以直接引用
#include <sys/mman.h>
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);// 映射指定区域
addr:映射的虚拟内存的起始地址,如果为NULL,,建议使用NULL则是由系统自动选择内存地址帮我们映射
length:长度为多长(建议以页为单位,即:4K)
prot:操作权限:
PROT_EXEC Pages may be executed. :执行权限
PROT_READ Pages may be read. :读取
PROT_WRITE Pages may be written. :写入
PROT_NONE Pages may not be accessed. :无权限
flags:操作标志位
MAP_SHARED:内存共享
MAP_PRIVATE:内存私有
fd:需要映射的文件描述符
offset:基于原本的位置上是否需要偏移
int munmap(void *addr, size_t length); // 卸载映射的区域