笔记
mcc12356
这个作者很懒,什么都没留下…
展开
-
linux内存分配(mmu)以及fork之后父子进程读时共享,写时复制
linux给应用程序首先分配的是虚拟内存,然后再通过 mmu(Memory Management Unit)将虚拟内存映射到物理内存。这样的好处是每一个进程都可以使用4G内存空间(0-3用户态,3-4内核态)。使用fork产生的父子进程读时共享,写时复制。比如在父进程内原来有一个全局变量,如果fork之后父子进程都没有去改变这个变量的值,那么内存中全局区这个变量只会存在一份,所谓读时共享;但是如果fork后父进程或者子进程改变了这个变量的值,那么这个变量将会在内存全局区存在两份,父子进程各自拥有各自的副原创 2020-06-29 10:56:25 · 1149 阅读 · 0 评论 -
c++ 类静态成员初始化
类静态成员是被该类所有对象共享的数据,必须在类外初始化。(如果在类内初始化的话则每个对象都会去初始化该成员,因此会报错)。class A{public: // static int a = 0; //错误写法 static int a;};int B::a = 0;如果是静态常量成员则两种写法都可以。(因为常量只会被初始化一次)class A{public: static const int a = 0;};...原创 2020-06-19 10:47:18 · 282 阅读 · 0 评论 -
c语言数组形参
在c语言中,如果数组作为参数传递,会退化为指针。void testPara(int nums[]){ int len = sizeof(nums) / sizeof(int); printf("形参数组长度为%d\n", len);}int main(){ int nums[] = {1,2,3,4,5}; int len = sizeof(nums) / sizeof(int); printf("实参数组长度为%d\n", len); test原创 2020-06-16 19:57:47 · 2408 阅读 · 0 评论 -
go语言package简单理解
go语言每一个文件夹都是一个单独的package,一个project里有且仅有一个main package,main package里有一个main function,这是程序执行的入口。main package里的东西其他package不可调用,其他package里的变量如需要调用可用package_name.func()或package_name.variable调用。此时func和variable必须以大写字母开头,表示公有。以小写字母开头表示私有,只能在同一个package下面调用。...原创 2020-05-22 16:24:42 · 266 阅读 · 0 评论