linux下使用mmap映射的内存几时被释放的问题

在Linux环境中,通过mmap进行内存映射,程序运行前后内存使用量显示减少2GB。程序结束并不立即释放内存,但使用shm_unlink可确保在程序结束后删除shm_open创建的共享内存文件,否则该文件会保留供下次使用。
摘要由CSDN通过智能技术生成
mmap()是一个非常重要的系统调用,这仅从mmap本身的功能描述上是看不出来的。从字面上看,mmap就是将一个文件映射进进程的虚拟内存地址,之后就可以通过操作内存的方式对文件的内容进行操作,上代码:
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <sys/file.h>
#include <wait.h>
#include <sys/mman.h>

#define COUNT 100
#define SHMPATH "shm"
#define MEMSIZE 1024 * 1024 * 1023 * 2

int main()
{
    pid_t pid;
    int count, shmfd, ret;
    int *shm_p;

    /* 创建一个POSIX共享内存 */
	if ((shmfd = shm_open(SHMPATH, O_RDWR | O_CREAT | O_EXCL, 0644)) >= 0)
	{
		printf("1.shm id:%d", shmfd);
		ftruncate(shmfd, MEMSIZE);
	}
	else if (errno == EEXIST)
	{
		if ((shmfd = shm_open(SHMPATH, O_RDWR | O_CREAT, 0644)) >= 0)
		{
			printf("1. exist shm id:%d", s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值