执妄的博客
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 招聘

2026-03-22
测试
#测试

rebase和merge的区别详解

引言当你正在开发一个新的功能,准备合并回主分支时,可能会发现存在很多冲突。此时究竟应该用合并还是变基呢? 合并(merge)一个典型的例子是,从节点A开始,团队开发了B和C功能并合并到了主分支,而你在一个特性分支开发了D和F。执行git checkout main命令切换到主分支后,再运行git merge feature将特性分支合并进来。此时,git会创建一个新的提交$\hat{E}$,它将两
2025-12-18
其他
#git

C++内存管理机制——loki::allocator

上中下3个classloki::allocator中包含3个类,从上层至下层分别为SmallObjAllocator、FixedAllocator和Chunk。 ChunkInit是由上层的类来调用的,不会提供给用户。其会申请blockSize * blocks大小的内存,并调用Reset来重置第一块可以使用的的内存索引firstAvailableBlock_为0,可使用的块数量blocksAv
2025-11-24
语言/CPP
#内存管理

使用CRTP实现上下文限值

前言本工程使用CRTP实现编译阶段控制权限的Context数据访问框架。具体目标为: 给不同的节点 Node 提供访问 DictContext 的能力。同时用模板 + static_assert 保证:Node 只能读 IN_KEYS,写 OUT_KEYS。否则编译报错。 PermissionKey——Key的类型系统1234567891011121314151617181920212223/
2025-11-17
设计模式
#奇异递归模板

CRTP:奇异递归模板

前言CRTP(Curiously Recurring Template Pattern),奇异递归模板是一种特征的模板技术,其特征为: 基类是一个模版类 派生类继承该基类时,将派生类自身作为模板参数传递给基类 CRTP范例CRTP的一个范例如下,Base类通过static_cast将基类指针转换为派生类。由于没有动态类型检查,这个过程是不一定安全的。但Base<Derived>是利
2025-11-17
设计模式
#奇异递归模板

C++内存管理机制——malloc_free

VC6 VS VC10VC6内存分配下面的图片展示了VC6内存分配的调用栈,操作系统会调用mainCRTStartup()做一些准备工作,然后才会调用程序编写者的main()函数。在_heap_alloc_base()函数中,如果申请的内存大小小于_shb_threshold,则会通过_sbh_alloc_block(size)申请内存,否则通过操作系统的HeapAlloc()申请内存。 SBH
2025-11-13
语言/CPP
#内存管理

C++内存管理机制——std::allocator

mallocvc6.0 malloc 上图展示了VC6.0中malloc()函数分配的内存。vc6.0的malloc()是一定会携带cookie的,且固定占用8个字节。蓝色部分是申请的内存,假定为12个字节,表示为16进制下的0xC。debug heder和tail由灰色的块组成,每个块4个字节,因此共占32+4个字节。上下cookie占用4*2个字节。上述所有信息共占据0xC+(32+4)+4*
2025-10-22
语言/CPP
#内存管理

C++内存管理机制——primitives

内存分配的每个层面C++的内存管理方式有如下四种,一般不直接使用操作系统的API进行管理,以尽可能避免与特定操作系统绑定。 四种内存操作方法的特性如下: new/detele expression内存申请通过new进行内存申请的过程: 通过operator new()操作分配一个目标类型大小的内存,图中为Complex的大小。 通过static_cast将得到的内存块强制转化为目标类型
2025-10-19
语言/CPP
#内存管理

explicit关键字

explicit的作用在C++中explicit用来修饰类的构造函数,用于禁止隐式类型转换(只能显式调用构造函数)和禁止复制初始化(只能直接使用初始化)。 explicit使用的注意事项 explicit只能用于类内部的构造函数声明上。 explicit关键字作用于单个参数的构造函数。 禁止隐式类型转换的示例未加explicit时的隐式类型转换: 123456789101112131415161
2025-09-24
语言/CPP
#CPP

C++中的类型转换

static_caststatic_cast可以在相关类型之间进行转换,如整型与浮点型,指针类型等。它执行的是编译时类型检查,不会做运行时的类型检查。它的工作原理是在编译时,编译器利用已知的类型信息来进行类型兼容性检查并执行转换。所以如果类型之间的转换是不安全的或不允许的,编译器在编译时会给出错误(比如基类指针向派生类进行转换)。 示例1:基本数据类型的转换12int i = 10;float f
2025-09-16
语言/CPP
#CPP
123

搜索

Hexo Fluid
总访问 次 总访客 人