摘要: PIMPL(Pointer to IMPLementation)惯用法详解 核心概念 PIMPL(Pointer to IMPLementation,也称为"Opaque Pointer"或"Cheshire Cat"模式)是一种C++设计模式,它将类的实现细节与接口完全分离。 基本思想 // 传统 阅读全文
posted @ 2026-02-01 20:54 平凡人 阅读(19) 评论(0) 推荐(0)
摘要: RAII(资源获取即初始化) RAII(Resource Acquisition Is Initialization)是C++的核心编程理念,将资源的生命周期与对象的生命周期绑定,确保资源在对象构造时获取,在对象析构时释放。 核心思想 基本模式 class ResourceHolder { priv 阅读全文
posted @ 2026-01-29 14:43 平凡人 阅读(5) 评论(0) 推荐(0)
摘要: std::vector可以看作值类型(value type)。在C++中,std::vector设计为具有值语义,这符合C++标准库容器的整体设计哲学。 核心特征:值语义 1. 深拷贝行为 std::vector<int> v1 = {1, 2, 3}; std::vector<int> v2 = 阅读全文
posted @ 2026-01-23 13:04 平凡人 阅读(4) 评论(0) 推荐(0)
摘要: CLOG为blender提供的日志记录模块,它实现了日志记录的基本功能,同时提供了过滤功能,可通过参数来控制,实现准确记录所关注的记录,来帮助定位问题关键点。 该模块只有二个文件:CLG_log.h,clog.c。 在CLG_log.h文件最后有以下定义: #define CLOG_INFO(clg 阅读全文
posted @ 2024-12-21 14:20 平凡人 阅读(162) 评论(0) 推荐(0)
摘要: DNA是一个生物学名词,DNA是所有生物的遗传物质基础。生物体亲子之间的相似性和继承性即所谓遗传信息,都贮存在DNA分子中。 Blender把所有需要序列化的(可以保存到文件的结构数据)核心结构称之为DNA,这些自定义的数据结构(如Object,ID,bScreen,材料、纹理、几何体:网格、曲线. 阅读全文
posted @ 2022-09-30 23:22 平凡人 阅读(539) 评论(0) 推荐(0)
摘要: 元对象系统在QT6中有重大改进,参考: Qt6来袭,据说QMetaType + QVariant的功能出现重大更新 阅读全文
posted @ 2021-09-12 13:35 平凡人 阅读(78) 评论(0) 推荐(0)
摘要: ID数据块 源文为Blender官方文档:ID Datablocks 对象,网格,材质,场景,这些都是ID数据块的例子。 它们通常在DNA_{某种类型}_types.h头文件中定义。 ID数据块是以一组公共属性开始的内存块。 在C中,这被建模为一个结构,它嵌入ID类型的结构作为第一个字段。 如果它有 阅读全文
posted @ 2020-10-24 13:34 平凡人 阅读(685) 评论(1) 推荐(0)
摘要: Blender项目主要由c/C++编写的,模块较多,规模很大。由于C/C++语言很容易出现内存泄漏,为此Blender在底层代码中提供了内存泄漏检测机制,方便在需要时进入调试模式报告内存泄漏。 为实现内存泄漏检测,必须在内存分配时做些额外的记录,为此,提供了一组函数替换c/c++语言原生的内存分配函 阅读全文
posted @ 2020-10-06 11:28 平凡人 阅读(806) 评论(0) 推荐(0)
摘要: IDA静态反汇编技巧 一、通过添加类型库 二、添加结构 在Structures窗口中显示当前可用结构信息,可手工添加结构,也可导入结构,有二种方法导入: A、通过定义一个c语言的头文件,将结构定义写在头文件中,然后通过菜单Load File->Parse c header file导入文件中定义的结 阅读全文
posted @ 2018-10-31 10:17 平凡人 阅读(1877) 评论(0) 推荐(0)
摘要: IOCTL 下图显示控制代码结果格式: 在wdm.h中定义了一系统宏来解析/反解析IO控制代码: //宏:用来生成IOCTL 和 FSCTL功能控制代码,功能代码0-2047由微软使用,2048-4095供用户使用 #define CTL_CODE( DeviceType, Function, Me 阅读全文
posted @ 2018-10-03 09:22 平凡人 阅读(1140) 评论(0) 推荐(0)