Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146139
  • 博文数量: 40
  • 博客积分: 1131
  • 博客等级: 少尉
  • 技术积分: 459
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-16 11:50
文章分类
文章存档

2012年(2)

2011年(38)

我的朋友

分类: 嵌入式

2011-07-30 15:58:09

c内存管理

c内存管理使用malloc, calloc, realloc和free函数提供了对动态内存分配(heap)的支持。

malloc

分配但不初始化内存,大小为size个字节数。

#include
void *malloc(size_t size);

不必对malloc返回的指针做强制类型转换,因为在赋值的时候自动转了。
if (char *pmem = malloc(100 * sizeof(char)) == NULL) {}

calloc

分配并初始化内存,大小为size个字节数。

#include
void *calloc(size_t nmemb, size_t size);

返回一个指向包含nmemb个元素的数组的指针,数组中每个元素的大小为size个字节。
nmemb:内存块的数组的个数,竖轴方向。
size:内存块的数组的大小,横轴方向。

realloc

能够改变以前分配的内存块的大小。

#include
void realloc(void *ptr, size_t size);

size既可以大于也可以小于原来的大小。

free

释放内存。

内存映像文件

内存映像文件有两个主要的优点。
首先,它可以加速文件I/O操作,因为最快的磁盘操作也要比内存慢。
其次,可以进程间共享数据。

mmap

mmap把一个磁盘文件映像到内存中。
#incude
#include
void *mmap(void *start, size_t length, int port, int flags, int fd, off_t offset);

munmap

解除内存映像并释放内存。

msync

把被映像的文件写入磁盘。

int msync(const void *start, size_t length, int flags);

锁定内存

内存加锁意味着防止一块内存区域被交换到磁盘上。

mlock, munlock, mlockall, munlockall,

#include
#include

阅读(1850) | 评论(0) | 转发(0) |
0

上一篇:访问系统信息

下一篇:线程

给主人留下些什么吧!~~