C/C++
文章平均质量分 64
little_angel
这个作者很懒,什么都没留下…
展开
-
linux C 线程间通信-信号量机制
1. 线程间通信-互斥锁互斥锁,适用于共享资源只有一个的情况下。用简单的加锁方法控制对共享资源的原子操作 只有两种状态:上锁、解锁可把互斥锁看作某种意义上的全局变量 在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作 若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止。互斥锁保证让每个线程对共享原创 2015-04-20 17:01:49 · 3623 阅读 · 0 评论 -
boost:: scoped_ptr源码剖析
/* E:\Program Files\CodeGear\RAD Studio\7.0\include\boost_1_35\boost/checked_delete.hpp 24: */namespace boost{ template inline void checked_delete(T * x) { typedef char type_mus转载 2013-10-08 22:28:02 · 943 阅读 · 0 评论 -
auto_ptr解析
auto_ptr解析auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心地使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认这个小小的auto_ptr转载 2013-10-08 22:21:02 · 716 阅读 · 0 评论 -
shared_ptr解析
shared_ptr解析《超越C++标准库-Boost库导论》头文件: "boost/shared_ptr.hpp"几乎所有稍微复杂点的程序都需要某种形式的引用计数智能指针。这些智能指针让我们不再需要为了管理被两个或多个对象共享的对象的生存期而编写复杂的逻辑。当引用计数降为零,没有对象再需要这个共享的对象时,这个对象就自动被销毁了。引用计数智能指针可以分为侵入式(intrusive)和转载 2013-10-08 22:21:51 · 880 阅读 · 0 评论 -
scoped_ptr解析
scoped_ptr解析《超越C++标准库-Boost库导论》头文件: "boost/scoped_ptr.hpp"boost::scoped_ptr 用于确保动态分配的对象能够被正确地删除。scoped_ptr有着与std::auto_ptr类似的特性,而最大的区别在于它不能转让所有权,然而auto_ptr却可以。事实上,scoped_ptr永远不能被复制或被赋值!scoped_转载 2013-10-08 22:19:56 · 702 阅读 · 0 评论 -
C语言中的volatile
C中volatile作用:Volatile单词的意思是易变的,不确定的。在C中,被volatile修饰的变量,表示:(1)该变量的值是可变的,可能随时在程序外部被改变;(2)使用该变量的时候,必须每次从该变量所在的地址所指的内存去读,不能把它放在寄存器或者cache中重复访问,可以保证对特殊数据(接口数据)的稳定访问;(3)告诉编译器不要进行编译优化。经常用于嵌入式编程中。原创 2013-09-06 09:48:39 · 1106 阅读 · 0 评论 -
static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别
static_cast、dynamic_cast、reinterpret_cast和const_cast之间的区别 C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-转载 2013-08-12 15:54:18 · 893 阅读 · 2 评论 -
设计一个不能被继承的类-C++实现(来源于剑指名企offer)
JAVA中,final修饰的类不能被继承;而C++中得自己去实现。原创 2013-08-23 20:32:25 · 801 阅读 · 1 评论 -
基类指针转换为子类指针,子类指针转换为基类指针
#include#includeusing namespace std;class base{ public: virtual void virtual_fun() {cout<<"base"<<endl;} void normal_fun() {cout<<"base"<<endl;}};cla原创 2013-08-08 20:23:23 · 4274 阅读 · 2 评论 -
C语言标准库函数 qsort函数详解
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。qsort包含在头文件中,此函数根据你给的比较条件进行快速排序,通过指针移动实现排序。排序之后的结果仍然放在原数组中。使用qsort函数必须自己写一个比较函数。函数原型:void qsort ( void * base, size_t num, size_转载 2012-12-14 14:53:51 · 611 阅读 · 0 评论 -
编译语言与解释语言的区别
编译语言与解释语言的区别 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。 编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编转载 2012-09-03 21:51:39 · 755 阅读 · 0 评论 -
如何在程序中写log日志(定义log级别:error,warn, info, debug; 宏定义打印不同级别的日志; 程序中引用宏定义即可)
#include #include #define global_debug 2#define global_progname "MYLOG"enum{ ERROR, WARN, INFO, DEBUG,};#define debug(OUT, STR, ARGS...) \ if (global_debug >= DEBUG) \ fprintf(stdou原创 2015-06-01 10:51:27 · 3124 阅读 · 0 评论