• 使用迭代器和下标访问C++容器的比较

    C++的迭代器提供了一个非常方便的访问容器元素的方式。有一种设计模式就叫做迭代器模式,它是一个行为(behavioral)设计模式,提供了复杂数据结构的顺序遍历方法,同时不会暴露内部数据结构的细节。下标访问是从C语言数组传承而来的,在C++标准库的数组类中也同时提供了下标访问的操作符重载。本文从运行效率和代码风格两方面比较了二者的差异。

  • char类型的符号特性

    在C++中 char 类型用来表示字符,其数据宽度为一个字节,通常也可以将 char 用作占一个字节的整数。但整数类型又分为无符号整数和有符号整数,对于具有相同数据宽度的有符号整数和无符号整数,它们的允许的取值范围是不同的。在将 char 当作整型数据使用时,要格外注意其符号特性。

  • 查看操作系统中所有的共享内存

    最近在开发一个基于共享内存的跨平台数据缓存组件,核心思想是将数据存放在共享内存中以实现多进程间数据交换。在开发和调试过程中需要借助工具查看系统中的共享内存。本文记录了Linux和Windows下查看共享内存状态信息的方法。

  • C++11中的内存顺序

    在C++11中引入了内存顺序(memory order)这一概念,我查阅资料进行了一番研究,把认为有用的知识点整理记录下来,方便以后查阅。

  • 在C++智能指针中使用自定义的deleter

    在最近的开发中,我使用了智能指针来管理一个对象,但是这个对象需要调用特定的函数完成内存释放。用编程的专业术语来讲,就是为智能指针提供一个自定义的deleter。我很好奇的是,这个自定义资源回收函数是否需要在入口处对参数进行空指针检查呢?

  • 栈溢出问题和chkstk

    最近在调试程序时遇到了一个栈溢出的问题,栈溢出通常是由程序错误引起的,通过修正程序的bug就能解决问题。但是这次的栈溢出,从代码上看并没有错误,经过一番排查和调试,我找到了解决问题的方法,同时也加深了对操作系统中一些概念的理解。