ceph源码学习之c++语法

来源:互联网 发布:linux qq安装教程 编辑:程序博客网 时间:2024/06/15 03:14

1.mutable

在C++中,mutable是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中,甚至结构体变量或者类对象为const,其mutable成员也可以被修改。
例子:
struct A{
int a;
mutable int b;
        }
const  A  a1 = {1,2}
                a1.a = 3;      //错误
                a1.b = 4;     //正确

2.申请内存的几个函数

2.1 malloc与free        --------用户空间,堆上动态申请的内存,C++/C语言的标准库函数
      kmalloc 与kfree            ----------内核空间,物理连续
        vmalloc 与vfree:         -------内核空间,物理不连续,虚拟连续

2.2 mmap与munmap -----mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。
2.3 new和delete ------是C++的运算符
2.4 posix_memalign和free ----申请内存对齐的内存地址

3.getenv()

val = getenv("环境变量名") 
获取指定环境变量名的值,若没有则返回空字符。

4.unlikely()和likely()

使用likely ,执行if后面语句的可能性大些,编译器将if{}是的内容编译到前面, 使用unlikely ,执行else后面语句的可能性大些,编译器将else{}里的内容编译到前面。这样有利于cpu预取,提高预取指令的正确率,因而可提高效率。