c++中的智能指针

内存管理是c++中比较棘手的问题。轻则是内存泄漏,重则是野指针、访问越界而崩溃,我们必须小心翼翼的对待指针。c++写多了,有时候会怀念java,c#这种有垃圾回收机制的语言,它们写出的代码是多么的干净优雅。 以前c++标准库里只有一个auto_ptr的智能指针,它的出现让我眼睛为之一亮,原来c++代码还可以这样管理指针啊。但是auto_ptr适应的场景有限,还有自己本身管理权转移晦涩的问题。 c++的准标准库boost为此准备了一组智能指针,scoped_ptr、socped_array、shared_ptr、shared_array、weak_ptr、intrusive_ptr。开源的浏览器chromium也有自己的智能指针解决方案linked_ptr、scoped_ptr、scoped_refptr、WeakPtr。c++... Read More | Share it now!

chromium中的性能优化工具syzyProf

函数性能分析工具SyzyProf 我先开始介绍SyzyProf。这个工具可以捕获每个线程调用每个函数执行的时间,然后把结果生成一个KCacheGrind能够识别的数据格式文件,然后通过KCacheGrind的展示结果。你就可以知道函数哪个函数执行了次数最多,消耗的时间最多,哪个线程在读写文件,哪个线程在创建窗口界面,而且KCacheGrind以图形的方式显示出函数调用链等信息,非常直观。如图这是我生成CEF自带demo程序的函数调用信息。 其实能够函数性能分析工具已经够多了,比如xperf,AQTime,还有visual... Read More | Share it now!

c++输入输出重定向

感觉windows上使用输入输出重定向的地方不多,可能是因为Windows上大多是GUI的程序吧。如果是做单元测试console需要输入大量数据或者是调用一个console程序,需要获得它的输出的时候,IO重定向就是它大展身手的时候了。 c语言的重定向 c语言的重定向用freopen来实现,跟文件的读写类似。 c++的重定向 重定向子进程的输入输出流 在封装某些软件功能时候,我喜欢通过命令行调用隐藏窗口的方式现成的console... Read More | Share it now!