摘要:
Windows下的动态链接 DLL简介 DLL的设计目的与共享对象有些出入,DLL更加强调模块化,即微软希望通过DLL机制加强软件的模块化设计,使得各种模块之间能够松散地组合、重用和升级。 进程地址空间和内存管理:进程拥有独立的地址空间 基地址(Base Address)和相对地址(RVA, Rel 阅读全文
摘要:
Linux共享库的组织 共享库版本 共享库兼容性 兼容更新:增加接口、修复Bug/不兼容更新:修改和删除接口 这里讨论的接口:ABI(Application Binary Interface) 对于C++来说,ABI兼容问题比较严重。 共享库版本命名 主版本号:不兼容的重大升级 次版本号:兼容的增量 阅读全文
摘要:
优化内存管理 复习C++内存管理器API 动态变量的生命周期 动态变量有五个唯一的生命阶段。最常见的new表达式的各种重载形式执行分配和放置生命阶段。在使用阶段后,delete表达式会执行销毁和释放阶段。C++提供了单独管理每个阶段的方法。 分配(malloc、new) 程序要求内存管理器返回一个指 阅读全文
摘要:
优化I/O 写在开头 读写文件是再普通不过的活动了,以至于开发人员往往忽略了它们,但是实际上它们确实非常耗时的程序活动 互联网世界受限于数据传输速率和繁忙的服务器,响应延迟可能是以毫秒而非秒计量的。当数据传向远方的计算机时,即使是光速传输,传输时间也会成为一个影响性能的因素。 I/O的另外一个问题是 阅读全文
摘要:
优化数据结构 理解标准库容器 序列容器 stdstring、stdvector、stddeque、stdlist、std::forward_list 前三个容器能通过下标访问,而后两个容器不能 除了最后一个容器,push_back具有常量时间开销 只有后三个容器有高效的push_front方法 前三 阅读全文