C语言用malloc, calloc, realloc和free函数提供了对动态内存分配的支持。
函数分配没有被初始化过的内存块。
#include <stdlib.h>
void *malloc(size_t size);
分配并初始化内存块
void *calloc(size_t nmemb, size_t size);
改变以前分配的内存块的大小
void *realloc(void *ptr, size_t size);
释放一块内存
void free(void *ptr);
内存映像文件,可以加速文件I/O操作。普通的I/O调用,比如系统调用read和write或者库调用
fputs和fgets通过内核缓冲读出或写入数据,在内存映像文件上的I/O操作跳过内核缓冲,因而速
度要快许多。使用内存映像文件可以共享数据。
mmap函数把一个磁盘文件映像到内存
#include <unistd.h>
#include <sys/mman.h>
void *mmap(void *start,size_t length,int port,int flags,int fd,off_t offset);
在文件描述符fd指定的打开文件中,从文件起始处偏移offset的位置开始映像到内存中start开始
的地方。
munmap解除内存映像并把内存释放返回给操作系统。
int munmap(void *start, size_t length);
msync把被映像的文件写入磁盘。
int msync(const void *start,size_t length,int flags);
mprotect修改在内存映像上的保护模式。
int mprotect(const void *start, size_t len, int port);
内存加锁和解锁
mlock, mlockall, munlock, munlockall
mremap用于改变一个被映像的文件的大小。
void *mremap(void *old_addr, size_t old_len, size_t new_len, unsigned long flags);