Linux程序设计第七章 内存管理 笔记

1、malloc用来分配内存先是物理内存接着是交换空间。LInux提供虚拟内存,以页为单位进行划分。如果在以分配的内存后边继续写入一些数据会导致写入错误。

如果分配内存超过物理内存和交换空间的总和会导致Linux杀死进程

滥用内存、内存超出、空指针。       malloc、free     calloc、 realloc

2、文件锁定:原子方式创建锁文件,锁定文件不被其他文件操作,也可以只锁定文件 的一部分

fcntl.h  open 调用,并带上O_CREAT O_EXCL

针对某个资源创建一个锁文件。然后其他程序通过检查这个文件来判断它们自己是否被允许访问这个资源,锁文件充当一个指示器的作用

unlink系统调用删除所文件。

./lock2 & ./lock2  后台运行一份副本,然后在前台运行另一份副本

3、区域锁定。锁定文件区域;文件段锁定;文件区域锁定 fcntl  和locf调用,主要是用fcntl调用

共享锁、独占锁、解锁 F_RDLCK  F_UNLCK   F_WRLCK  区域的标志

fcntl的标志

F_GETLK

F_SETLK

F_SETLKW

l_pid

4、数据库、可存储长度可变的数据记录,有效地存储和检索数据

5、DBM数据存储例程集,称为dbm数据库。适合于存储相对比较静态的索引化数据。轻量级软件。适用于频繁访问,但却很少更新的数据,创建数据很慢,检索很快

dbm_open

dbm_store存储一个用于引用的索引,一个用于实际数据

dbm_fetch从数据库中检索数据,返回一个datum类型的结构

dbm_close

datum dbm数据库中的数据结构类型,跟FILE 结构很像

6、将char*赋值给char[30]时类型不兼容char[30]是字符数组的首地址,是一个常量,是不允许被赋值的

 char more_chars[21];
如果  more_chars = "foo" 则会报错,只能用
strcpy(items_to_store[0].more_chars, "foo");
7、dbm相关
DBM *dbm_ptr;   //pointer to dbm  指向数据库的指针

datum是用定义的数据类型,用来访问数据库的结构,跟访问文件的FILE结构很相似,存储用的数据块
 key_datum.dptr = (void *)key_to_use;   
 key_datum.dsize = strlen(key_to_use);
 data_datum.dptr = (void*)&items_to_store[i];
 data_datum.dsize = sizeof(struct test_data);
 dbm_ptr = dbm_open(TEST_DB_FilE,O_RDWR | O_CREAT, 0666);  打开数据库文件获得指针
 result = dbm_store(dbm_ptr,key_datum,data_datum,DBM_REPLACE);  存储一个数据块,包括key索引结构体,和数据块结构体
data_datum = dbm_fetch(dbm_ptr,key_datum);  根据key来索引存储的数据
    dbm_close(dbm_ptr); 关闭数据库文件



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值