c++(7`数据大小、内存管理和分配, optional)
数据大小 不同位系统,long和指针的字节数可能不同 内存五大分区 内核空间:是系统内部的区域,不可直接读写 堆区:存放动态生命周期对象,完全由程序员控制 效率较低:由于new/delete会造成内存空间不连续,使程序效率降低(寻址),堆的机制是很复杂的,它比栈的效率要低 空间大:对于32位系统,可达2^32 = 4G ...
数据大小 不同位系统,long和指针的字节数可能不同 内存五大分区 内核空间:是系统内部的区域,不可直接读写 堆区:存放动态生命周期对象,完全由程序员控制 效率较低:由于new/delete会造成内存空间不连续,使程序效率降低(寻址),堆的机制是很复杂的,它比栈的效率要低 空间大:对于32位系统,可达2^32 = 4G ...
进制 基础 最小到的传输单位bit位/比特 最小的存储单位是byte字节 == 8位 左边高位,右边低位 2,8,10,16表示范围:0——1,0——7,0——9,0——9 + A——F 前缀:0b/0B,0o/0O,无,0x/0X 后缀:b/B,o/O,d/D,h/H 0x00:0000 0000 ,0xff:1111 1111 ACSII码(有128...
类型别名 作用:将复杂的类型自定义别名,以便简化使用 #define intPtr int * #define 宏 类型,对于连续声明的指针类型变量,之后的变量不是指针 typedef int * IntPtr; typedef char mysize[10]; typedef struct m_struct { char c; }s; typedef int func(int ...
成员访问修饰符 作用 控制着类成员的访问权限 分类: public公共(struct默认):在类内,类外(类定义外),派生类,友元,都可以访问,通常存放对外公开的接口 protected受保护:在类内,派生类,友元可以访问,通常存放在继承体系中可以访问的部分 private私有(class默认):只能在类内,友元,可以访问,通常存放对类外隐藏实现的部分 继承访问修饰...
设计模式 理解:算法是解决特定问题的模板,设计模式是优化架构的模板 抽象:将通用的数据和方法提取出来的过程(房子的设计图纸) 封装:将抽象出来的数据和方法封装为类/将设置成员访问权限,对外隐藏内部实现细节(一个房子) 遵守高内聚,低耦合(设计原则) 高内聚:模块内部数据/功能相关程度的高 低耦合:模块/对象之间的依赖关系弱,修改一个模块 ...
面向过程(OPP)、面向对象(OOP) 面向过程 vs. 面向对象 面向过程:问题分解成一系列的步骤(方法和数据),然后按照顺序执行这些步骤 例子:插电源-》放衣服-》加洗衣液-》漂洗-》甩干 优点:效率高 缺点:不易复用,不易扩展,不易组合,安全性差,不易使用 C语言完全面向过程 面向对象:问题分解抽象...
CMake CMake 是一个 跨平台的构建工具,可以根据不同的平台、不同的编译器,生成相应的构建文件 源文件想要在各个平台各个编译器运行: 考虑没有cmake的情况:需要考虑低级构建脚本的差异 考虑用cmake的情况:通过高层抽象cmake,将它编译成特定平台的低级构建脚本(Makefile 、.vcxproj、bat、.sh) CmakeLists.txt配置文件...
作业5 前言 本节我们将实现实时光线追踪的时间累计降噪算法 对于光线追踪的渲染结果,G-Buffer 及其他相关信息会以文件的形式提供(202作业5发布公告的作业数据百度网盘资源,将它解压到项目目录) 运行build.bat 或 build. sh 来构建和编译作业框架,里面的指令和以前一样,通过cmake生成工程和vs编译即可生成可执行文件 工程输入和输出都是.exr图片格式的文...
I/O库 输入和输出并不是C++语言中的正式组成成分,而是在c++ STL(Standard Library标准库,命名空间使用std)中的io库中定义的: 流(stream): 描述字节序列在设备和内存流动的现象 输入输出: 如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,是输入操作 如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),是输...
作业4 前言 微表面模型的BRDF(Microfacet BRDF)存在一个根本问题,就是只考虑了首次弹射出射的能量,忽略了首次未出射的能量,而这部分能量会参与到微平面间的多次弹射中,一部分会弹射到人眼,这就导致了材质的能量丢失,并且当材质的粗糙度越高时,能量的丢失会越严重 Kulla-Conty BRDF模型,引入一个微表面BRDF补偿项fms,来补偿光线的多次弹射,使得材质的渲染结...