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预取,提高预取指令的正确率,因而可提高效率。