免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 742 | 回复: 0
打印 上一主题 下一主题

内存管理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览
c内存管理

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

malloc

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

#include <stdlib.h>
void *malloc(size_t size);

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

calloc

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

#include <stdlib.h>
void *calloc(size_t nmemb, size_t size);

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

realloc

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

#include <stdlib.h>
void realloc(void *ptr, size_t size);

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

free

释放内存。

内存映像文件

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

mmap

mmap把一个磁盘文件映像到内存中。
#incude <unistd.h>
#include <sys/mman.h>
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 <unistd.h>
#include <sys/mmap.h>

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP