随笔分类 - C++
摘要:版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u014530704/article/details/78804163本文主要讲代理服务器源码,是一位叫Carl Harris大神写的,非常简
阅读全文
摘要:1.栈溢出引发的core往往出现出现在递归调用中。 gdb时看到的特征是: 栈缺失,当前栈地址不可读。 根据栈是逆向生长的特点(栈逆向生长,所以很容易出现类似数组溢出覆盖率函数返回地址,导致函数退出地址出错),可以通过地址增加找到栈的位置。 找到有效栈后往往会发现重复的地址不断重复,这个实际就是递归
阅读全文
摘要:转自:https://www.cnblogs.com/zhoug2020/p/6581477.html 模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数。类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1、2个成员函数即可。在这种情况下,如
阅读全文
摘要:vsnprintf和snprintf是C语言printf家族函数的成员,相关函数列表如下:
阅读全文
摘要:转载目的主要了解fork原理,实际fork的使用越来越少,原因也可以通过本文了解。 实际在当前的多线程情况下,fork已经基本无太多可取之处了。 fork的设计之出应该就是为了更方便地使用多进程程序,提高并发性。 然而对于多个并发需要共享大量数据时,多线程拥有的内部通信往往比较高效,而fork只实现
阅读全文
摘要:X86-64寄存器和栈帧 概要 说到x86-64,总不免要说说AMD的牛逼,x86-64是x86系列中集大成者,继承了向后兼容的优良传统,最早由AMD公司提出,代号AMD64;正是由于能向后兼容,AMD公司打了一场漂亮翻身战。导致Intel不得不转而生产兼容AMD64的CPU。这是IT行业以弱胜强的
阅读全文
摘要:实际上有三种类型模板参数:类型模板参数、无类型模板参数和模板模板参数(以模板作为模板的参数)。 1、类型模板参数 类型模板参数是我们使用模板的主要目的。我们可以定义多个类型模板参数: template class Grid {...} 同样,也可以为类型模板参数指定默认值: #include ...
阅读全文
摘要:By SmartPtr(http://www.cppblog.com/SmartPtr/) 模板特化不同于模板的实例化,模板参数在某种特定类型下的具体实现称为模板的特化,以实现特定类型下非通用行为。模板特化有时也称之为模板的具体化,分别有函数模板特化和类模板特化。 针对一个模板参数的类模板特化的几种
阅读全文
摘要:Literal 字面值 字面量 Literal, 在程序语言中,指表示某种数据值的符码。如,123 是整数值符码, 3.14 是浮点值符码,abcd 是字串值符码,True, False, 是逻辑值符码,等。 Literal 代表的是数据值的本身,区别于“变量”(Variable, 即容纳数据值的
阅读全文
摘要:RTTI (Run Time Type info) 这个神奇的东西用于存储类的相关信息,用于在运行时识别类对象的信息。C++ 里面只记录的类的名字和类的继承关系链。使得编译成二进制的代码,对象可以知道自己的名字(ASCII),以及在继承链中的位置。 C++ 里面提供 一个关键字 typeid , 一
阅读全文
摘要:在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++
阅读全文
摘要:// 排序插入,可以指定在一定范围内排重插入,主要为了指定起始位置,在排序插入时可以避免重复搜索 template<typename IT, typename T> inline static bool SCOFindFirst(IT & iter, const IT & end, const T
阅读全文
摘要:VS2013出来了,对于C++来说,最大的改变莫过于对于C++11新特性的支持,在网上搜了一下C++11的介绍,发现这篇文章非常不错,分享给大家同时自己作为存档。 原文地址:http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/
阅读全文
摘要:#ifndef __SLINKEDLIST_H__ #define __SLINKEDLIST_H__ #include <new> #include <assert.h> #include <stdio.h> #include <exception> #ifdef _TEST #define TE
阅读全文
摘要:信号(Signals)信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。UNIX定义了许 多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变...
阅读全文
摘要:(读写锁优先级 写饥饿): 对一个同享的数据布局,读的频率远弘远于写,所以用了读写锁.但是发现写线程老是抢不到锁. 按The Open Group 的Single UNIX? Specification所说,"Thepthread_rwlock_rdlock() function applies a
阅读全文
摘要:通过下面发现磁盘满的情况下write调用阻塞业务线程执行testwrite.cpp (1.37KB)发送成功 #include <stdio.h>#include <stdlib.h>#include <iostream>#include <time.h>#include <map>#include
阅读全文
摘要:童鞋们在学习C++的时候,往往只是按照书本上的原文去强行记忆各种特性,比方说,静态变量只初始化一次。你心中一定在默念:一定要记住,static只会初始化一次云云,希望自己能够记住。告诉你,你为什么总是记不住,因为你没有正真理解静态变量的原理, 所以下面我就来告诉大家它的原理,直接上代码:[code=...
阅读全文
摘要:ref:http://bbs.csdn.net/topics/360249561一个继承了两个虚基类又增加了自己的一个虚函数pif的类,sizeof(指向pif的指针)竟然是8(X86)。我是从这里http://www.codeproject.com/KB/cpp/FastDelegate.aspx...
阅读全文
摘要:template class Widget; // uses "class"template class Widget; // uses "typename" 答案:没什么不同。在声明一个 template type parameter(模板类型参数)的时候,class 和 typename 意味...
阅读全文