分类: 嵌入式
2011-07-30 15:58:09
c内存管理使用malloc, calloc, realloc和free函数提供了对动态内存分配(heap)的支持。
malloc分配但不初始化内存,大小为size个字节数。
#include
void *malloc(size_t size);
不必对malloc返回的指针做强制类型转换,因为在赋值的时候自动转了。
if (char *pmem = malloc(100 * sizeof(char)) == NULL) {}
分配并初始化内存,大小为size个字节数。
#include
void *calloc(size_t nmemb, size_t size);
返回一个指向包含nmemb个元素的数组的指针,数组中每个元素的大小为size个字节。
nmemb:内存块的数组的个数,竖轴方向。
size:内存块的数组的大小,横轴方向。
能够改变以前分配的内存块的大小。
#include
void realloc(void *ptr, size_t size);
size既可以大于也可以小于原来的大小。
free释放内存。
内存映像文件内存映像文件有两个主要的优点。
首先,它可以加速文件I/O操作,因为最快的磁盘操作也要比内存慢。
其次,可以进程间共享数据。
mmap把一个磁盘文件映像到内存中。
#incude
#include
void *mmap(void *start, size_t length, int port, int flags, int fd, off_t offset);
解除内存映像并释放内存。
msync把被映像的文件写入磁盘。
int msync(const void *start, size_t length, int flags);
锁定内存内存加锁意味着防止一块内存区域被交换到磁盘上。
mlock, munlock, mlockall, munlockall,
#include
#include