首页 > 编程知识 正文

c++使用未初始化的内存,c语言程序设计基础

时间:2023-05-03 19:28:21 阅读:22662 作者:3500

c语言mmap ) )函数:创建内存映射标头:

1 #包含#包含

定义函数: void*mmap(void*start,size_t length,int prot,int flags,int fd,off_t offsize );

函数说明: mmap ) )用于将文件内容映射到内存。 对该内存区域的访问是对文件内容的直接读写。

参数说明:

返回值:映射成功时返回映射区域的内存起始地址,否则返回map_failed(-1 ),错误原因保存在errno中。

错误代码:

EBADF参数fd不是有效的文件描述符。

EACCES访问权限错误。 对于MAP_PRIVATE,文件必须是可读的,PROT_WRITE及其文件必须是可写的才能使用MAP_SHARED。

EINVAL参数start、length或offset中存在错误。

EAGAIN文件已锁定或内存太多。

ENOMEM内存不足。

示例: mmap ) )读取/etc/passwd文件的内容。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17#include

#包含

#包含

#包含

#包含

主()。

Int软盘;

void *start;

struct stat sb;

FD=open('/etc/passwd ',O_RDONLY ); /*打开/etc/passwd */

stat (软盘、sb ); /*获取文件大小*

start=mmap(null,sb.st_size,PROT_READ,MAP_PRIVATE,fd,0 );

判断if(start==map_failed )/*映射是否成功(/

返回;

printf('%s ',start; mun ma (开始,sb.st_size ); /*取消映射*

Cosed (软盘;

}

执行结果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19 root : x :03360 root :/root :/bin/bash

bin : x :1336013360133601: bin :/bin :

daemon : x :23360233602336023360 daemon :/sbin

ADM : x :43360 ADM :/var/ADM :

LP : x :4336073360 LP :/var/spool/lpd :

sync : x :5336003360 sync :/sbin : bin/sync :

shut down : x :6336003360 shut down :/sbin :/sbin/shut down

halt : x :7336003360 halt :/sbin :/sbin/halt

mail : x :83360123360 mail :/var/spool/mail 3360

news : x :933601: news :/var/spool/news :

UCP : x :103360143360 uucp :/var/spool/uucp :

operator : x :11336003360 operator :/root :

games : x :1233601003360 games :/usr/games :

gopher : x :1:303360 gopher :/usr/lib/gopher-data :

FTP : x :143360503360 ftpuser :/home/FTP :

nobody : x :993360993360 nobody :/:

xfs : x :1003360101: xfont server :/etc/xll/fs :/bin/false

GDM : x :423360423360336033603360/home/GDM :/bin/bash

kids : x :5003360500:/home/kids :/bin/bash

c语言munmap ) )函数:取消内存映射标头:

1 #包含#包含

定义函数:

1intmunmap(void*start,size_t length );

函数说明: munmap (用于取消参数start指向的映射内存的起始地址,参数length是要取消的内存的大小。 当进程终止或使用exec相关函数运行其他程序时,映射内存将自动清除,但关闭相应的文件描述符不会清除映射。

返回值:如果取消映射成功,则返回0,否则返回-1。 错误原因存储在errno中的错误代码EINVAL参数start或length无效。

示例: mmap (请参见

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。