- 博客(8)
- 收藏
- 关注
原创 C++全局对象,静态局部对象,自动局部对象构造析构顺序
全局对象构造在main函数执行之前,局部静态对象构造在执行函数体之前;局部静态对象析构早于全局对象,都在main函数之后。#include<stdio.h> class A { int a;public: A(int i) {a = i; printf("A() %d\n", a);} ~A() {printf("~A() %d\n", a);}};void Get() { printf("Get() enter\n"); static
2022-02-04 04:28:42
2433
原创 Linux内核内存分配
kmalloc得到的是逻辑地址。(逻辑地址的访问速度比虚拟地址快)得到的内存在物理上是连续的。(大部分DMA设备要求对应的内存是物理连续的)适合分配小块内存,最好不要大于一页。有最大尺寸限制,比如128K(因系统/配置而异)。基于slub。vmalloc返回的是虚拟地址。得到的内存在物理上不一定是连续的。适合分配大块内存, 比如几MB到几十MB。基于buddy system。alloc_pages/get_free_page ...参见:Physical Page Allo
2022-01-02 04:13:38
438
原创 Linux进程切换 凯哥笔记
就是对CPU各个寄存器的切换1)virtual addr 寄存器2)其它寄存器,如sp,fp,pc等等切换以后,随着进程对内存的访问,TLB可能需要更新,产生缺页中断,这个是进程切换的最大开销。线程切换不需要更新虚拟地址空间,所以速度快。...
2021-12-30 15:41:48
603
原创 凯:c表达式顺序点
常见非顺序点大多数二元操作符(除了 || &&)函数调用的各个实参用这个例子理解为什么多个副作用的顺序是不定的int x=1, y;y = x++ + x++;有两种可能的结果: 1)y=3(第一个x++的值为1,第二个x++的值为2) 个人认为,两个x++在同一CPU core上运行。 第一个x++的x的初值都为1,第二个x++的x的初值都为2。 2)y=2(第一个x++的值为...
2021-09-08 05:52:00
156
原创 C 面试题 1
1.写出下面程序运行的结果void test(int arr[20]) { printf("%d.", sizeof(arr));};void main(){ int a[20]; test(a);}答案:答案是4 (32位机),或者8(64位机)。因为arr是一个指针。
2021-09-07 05:17:33
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人