摘要:
转载自:https://www.xingkongbeta.com/?p=115 这几天用Advanced Installer给公司的软件制作安装包,本来以为只是一项很简单的工作,却不幸地踩到了好几个坑,在此记录下来备忘。 两个Code UpgradeCode 同一软件的UpgradeCode必须一样 阅读全文
摘要:
引言 在windows平台下,一个检测内存泄漏的工具是vld。 下载地址是:https://kinddragon.github.io/vld/ github地址:https://github.com/KindDragon/vld 使用 从网上下载exe安装包。安装过程中,可以选择把vld头文件、li 阅读全文
摘要:
引言 perf 是linux提供的一个免费profile工具。 比较全面的一个教程是: "brendangregg" perf生成记录 1.生成perf数据: 2.读取perf.data,输出trace 3.压缩栈 这里用到了火焰图工具:https://github.com/brendangregg 阅读全文
摘要:
引言 C++使用虚函数来实现多态机制,大多数编译器是通过虚函数表来实现动态绑定。 类的内存布局 1.普通类 类中只有普通成员变量,对象在内存中顺序存储成员变量。输出: 2.有虚函数的类 先看输出结果: 我们看到,这个对象的内存占用比上一个多了8个字节,其中成员变量m的地址也和对象b的地址不一样了,正 阅读全文
摘要:
前言 nm是name的缩写,它显示指定文件中的符号信息,文件可以是对象文件、可执行文件或对象文件库。如果文件中没有包含符号信息,nm报告该情况,单不把他解释为出错。nm缺省情况下报告十进制符号表示法下的数字值。 选项 -a/--debug-syms:显示所有符号,包括debugger-only sy 阅读全文
摘要:
由来 在最近的项目中,我需要用到一个能设置固定长度的优先级队列,查了一下知名的第三方库,没有找到合适的,于是,决定自己写一个。 需要的功能主要是: 一个能存放对象的队列,支持push和pop 容量固定,可以配置 能自动排序 能够遍历 ring buffer 因为,我通读过STL的源码,对stl容器比 阅读全文
摘要:
模板是编译器在编译期间生成代码。虚函数是程序运行期间计算出调用哪个函数。 一旦程序在运行期间计算出它需要调用一个模板化的虚函数,汇编已经生成了,编译器不能再生成合适的实例了。因此,你不能使用模板虚函数。 不过,有一些强大且有趣的技术起源于结合多态和模板,尤其是所谓的 type erasure c++ 阅读全文
摘要:
介绍 gtest是谷歌开发的用来做C++单元测试的测试框架 基本概念 使用gtest,你就需要写断言(assertions),用来检查一个表达式是否为true。断言的结果有三个:正确、非致命错误、致命错误。如果出现致命错误,就会退出当前函数,否则继续执行当前函数的后续部分。 测试用例(tests)使 阅读全文
摘要:
引入 shared_ptr 是c++为了提高安全性而添加的智能指针,方便了内存管理。 特点 shared_ptr 是通过指针保持对象共享所有权的智能指针。多个 shared_ptr 对象可占有同一对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是 阅读全文
摘要:
template class Sp { public: Sp(T* ptr = nullptr) : ptr_(ptr), count_(new size_t) { if (ptr) { *count_ = 1; } else { *count_ = 0; } } Sp(c... 阅读全文