摘要:
1.malloc函数 使用方法:参数是所需申请的内存块的字节数,返回指向申请的内存块的首地址的无类型指针,malloc申请的内存块是未初始化的。 函数原型: void* malloc(size_t num_size);//num_size = 需要申请的字节数 使用案例: int* p = (int 阅读全文
摘要:
reinterpret_cast 使用形式:reinterpret_cast<type-id>(expression) type-id必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以用于类型之间进行强制转换(不可移植,依赖底层实现)。 const_cast 使用形式:const_cast 阅读全文
摘要:
成员初始化列表的概念 在类的构造函数中,通过在构造函数的括号和花括号之间使用冒号和成员变量初始化列表进行初始化,而不是在函数体对成员变量进行初始化。 注意:初始化顺序是在类中成员变量的声明顺序,而不是初始化列表的排列顺序。 初始化列表和函数体初始的效率对比 利用初始化列表对成员变量进行初始化比在函数 阅读全文
摘要:
内存泄漏的含义 内存泄漏一般是指堆内存(即动态分配的内存)的泄漏。在程序通过malloc、calloc或new从堆中申请的内存后,需要通过free或delete显式释放这些内存块,否则,这些内存得不到释放,从而可使用的内存减少,这就是所谓的内存泄漏。 避免内存泄漏方式 1.基类的析构函数应当声明为虚 阅读全文
摘要:
需要根据任务的性质和CPU内核数n来决定。 CPU密集型程序:n+1, I/O密集型程序:n *(1/CPU利用率)≈ (2*n+1) 阅读全文
摘要:
封装:可以将事物的属性和行为抽象出来,封装在一个类中。 继承:子类可以从基类上继承其(全部或部分)属性和函数。 多态:多态是指一个接口,对应多种实现。C++的多态性具体体现在编译和运行两个阶段。编译时多态是静态多态,在编译时就可以确定使用的接口,例如函数重载和模板。运行时多态是动态多态,具体引用的接 阅读全文
摘要:
事物的简介 事务是一组操作的集合,它是一个不可分割的工作单位(具有原子性),事务会把所有的操作作为一个整体向系统提交或撤回操作请求,即这些事务中的任意一环节操作失败均会使已完成操作全部撤回,只有所有操作均成功,该事务才成功。 事务的四大特性ACID 1.原子性(Atomicity) 事务是不可分割的 阅读全文
摘要:
顶点着色器是CPU部分的渲染流水线中的第一个渲染处理阶段。这个阶段是第一个由程序员直接控制的阶段,但我们要知道,有些数据的操作发生在这个阶段之前。在DirectX中被称为输入汇编程序(input assembler)的过程中,几个数据流可能会交织在一起,形成沿管线发送的顶点和图元的集合。例如,一个对 阅读全文
摘要:
凸包的概念: 在某个二维平面上的给定一个点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点。 凸包算法 从点集中获取凸包的方法比较常用的有Jarvis步进法,Graham扫描法和Andrew算法,在时间性能(速度)上,Jarvis步进法<Graham扫描法<Andrew算法。 阅读全文
摘要:
一、线程安全函数 1.定义 如果进程中有多个线程同时在运行,并且这些线程可能会同时调用这个函数时,该程序的运行结果与在单线程运行时结果是一样的,而且其他变量的值也和预期的是一样的,则可称该函数是线程安全的。 2.危及线程安全的因素 (1)没有对函数中使用的共享变量(全局变量、静态变量)进行线程同步。 阅读全文