c/c++
文章平均质量分 73
xdgs_2005
这个作者很懒,什么都没留下…
展开
-
c/c++中可变参数的理解和运用
1、在c/c++语言中存在着参数数目不确定的情况,当无法列出传递给函数的所有实参的类型和数目的时候,可用省略号指定参数表。如:void fun(int num,...)2、函数传递参数的原理:c/c++语言在执行函数调用时,会把函数的参数从右至左压入栈中,以函数fun(参数1,参数2,参数3,参数4)函数为例,函数栈的分布情况如下:#include using n原创 2012-07-06 19:01:16 · 306 阅读 · 0 评论 -
移动客户端中长连接技术(一)
移动客户端 长连接原创 2015-07-12 09:13:48 · 4306 阅读 · 1 评论 -
移动客户端中的长连接技术
移动客户端 长连接原创 2015-07-11 16:42:01 · 2099 阅读 · 0 评论 -
chromium源码阅读(4)-weakptr
弱指针(WeakPtr)用作传递指针但不更换指针的Owner,不影响指针的状态(引用计数等),即明确知道谁去释放但其它引用者不确定其时机,用弱引用指针可随时知道其是否已delete。 1、用法:class Controller { public: void SpawnWorker() { Worker::StartNew(weak_factory_.GetWeakPtr()); }原创 2015-04-06 14:50:38 · 858 阅读 · 0 评论 -
chromium源码阅读(2)-智能指针scoped_ptr
scoped_ptr,顾名思义,是被设计用来管理指针的声明周期的。在指针对象离开当前作用域后,scoped_ptr负责清理销毁指针对象,从而避免c++程序员管理内存的负担。 1、scoped_ptr用法1)scoped_ptr{ scoped_ptr<Foo> foo(new Foo("wee"));} // foo goes out of scope, releasing the原创 2015-03-29 13:32:55 · 663 阅读 · 0 评论 -
Libevent源码分析-----内存分配
转载请注明出处: http://blog.csdn.net/luotuo44/article/details/38334979 Libevent的内存分配函数还是比较简单的,并没有定义内存池之类的东西。如同前一篇博客那样,给予Libevent库的使用者充分的设置权(定制),即可以设置用户(Libevent库的使用者)自己的内存分配函数。至于怎么分配,主转载 2015-04-05 20:27:56 · 493 阅读 · 0 评论 -
more effective c++--引用计数
引用计数是这样一个技巧,它允许多个有相同值的对象共享这个值的实现。这个技巧有两个常用动机。第一个是简化跟踪堆中的对象的过程。一旦一个对象通过调用 new 被分配出来,最要紧的就是记录谁拥有这个对象,因为其所有者--并且只有其所有者--负责对这个对象调用 delete。但是,所有权可以被从一个对象传递到另外一个对象(例如通过传递指针型参数),所以跟踪一个对象的所有权是很困难的。象 auto_p转载 2015-04-05 14:22:21 · 565 阅读 · 0 评论 -
chromium源码阅读(3)-scoped_vector
相比原生的vecotr行为,scoped_vector只是增加类在析构时delete其元素的行为。5 // ScopedVector wraps a vector deleting the elements from its16 // destructor.17 template <class T>18 class ScopedVector {19 MOVE_ONLY_TYP原创 2015-04-04 22:29:50 · 333 阅读 · 0 评论 -
Libevent源码分析-----evbuffer结构与基本操作
转载请注明出处:http://blog.csdn.net/luotuo44/article/details/39290721 对于非阻塞IO的网络库来说,buffer几乎是必须的。Libevent在1.0版本之前就提供了buffer功能。现在来看一下Libevent的buffer。buffer相关结构体:转载 2015-04-05 20:59:40 · 389 阅读 · 0 评论 -
绝对不要以多态方式处理数组(More Effective c++)
类继承的最重要的特性是你可以通过基类指针或引用来操作派生类。这样的指针或引用具有行为的多态性,就好像它们同时具有多种形态。C++允许你通过基类指针和引用来操作派生类数组。不过这根本就不是一个特性,因为这样的代码几乎从不如你所愿地那样运行。假设你有一个类BST(比如是搜索树对象)和继承自BST类的派生类BalancedBST:class BST { ... };class Bala转载 2015-04-04 08:22:36 · 544 阅读 · 0 评论 -
C++中的SFINAE
来源:http://blog.chinaunix.net/uid-1720597-id-306773.html这几天神游到一段is_base_of的代码迷惑了很久, 在查资料的过程当中, 发现C++中一种称之为SFINAE的技巧, 全称为"匹配失败并不是一种错误(Substitution Failure Is Not An Error)". 这是一种专门利用编译器匹配失败来达到某种目的的技巧.转载 2015-03-29 17:26:15 · 396 阅读 · 0 评论 -
c++move语义与右值引用
// Copyright (c) 2012 The Chromium Authors. All rights reserved.// Use of this source code is governed by a BSD-style license that can be// found in the LICENSE file.#include "base/compiler_specif翻译 2015-03-05 12:20:52 · 3861 阅读 · 0 评论 -
chromium源码阅读(1)-引用计数
引用计数是诸多技术的基础,设计上基本如出一辙,chromium智能指针的设计原理也基本类似,不过更为精巧。1) 抽象出引用计数的基类,避免模板膨胀的问题![这里写图片描述](http://img.blog.csdn.net/20150328115112897)2) 线程安全的引用计数template <class T, typename Traits> class RefCountedThr原创 2015-03-28 12:23:47 · 619 阅读 · 0 评论 -
当析构函数遇到多线程
来源:http://www.cnblogs.com/Solstice/archive/2010/02/10/dtor_meets_threads.html摘要编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对转载 2015-03-14 00:11:41 · 5878 阅读 · 0 评论 -
chromium源码阅读(4)-线程模型之IO线程
chromium io 线程原创 2015-08-01 22:14:01 · 585 阅读 · 0 评论