c/c++
文章平均质量分 66
阿蓬江
.。。。。。。。。。。。。。。。。。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
对齐指令
看一下这两个指令是如何影响变量在内存的存储的。1、pack pragmapack pragma设置了struct、union或class中各成员的对齐方式,结构成员对齐指的是成员相对于起始地址的偏移量。该指令基本用法如下:#pragma pack(n)它指定了结构成员按n(1,2,4,8,16)(alignment must be a small power of 2)字节对齐,如转载 2011-08-25 15:18:36 · 1348 阅读 · 0 评论 -
TCP选项:TCP_NODELAY和TCP_CORK
Nagle算法 TCP_NODELAY和TCP_CORKNagle算法根据创建者John Nagle命名。该算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用 程序系统的效率。Nagle算法,由Ford Aerospace And Communications Corporation Conge转载 2012-05-02 18:51:49 · 937 阅读 · 0 评论 -
typeid
在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。 dyn转载 2012-05-08 17:08:43 · 483 阅读 · 0 评论 -
C语言中volatile关键字的作用
一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的转载 2012-07-06 10:24:43 · 518 阅读 · 0 评论 -
_cdecl
http://baike.baidu.com/view/1280676.htm几种函数调用方式 __cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误转载 2012-10-11 10:30:29 · 696 阅读 · 0 评论 -
可能由_wordcopy_fwd_dest_aligned 引起的一处内存出错
==28356== Thread 9:1481 ==28356== Invalid read of size 81482 ==28356== at 0x3328A7BA95: _wordcopy_fwd_dest_aligned (in /lib64/libc-2.5.so)1483 ==28356== by 0x3328A7B0FF: bcopy (in /lib64/libc原创 2013-11-13 17:51:24 · 3732 阅读 · 0 评论 -
技巧:多共享动态库中同名对象重复析构问题的解决方法
http://www.ibm.com/developerworks/cn/linux/l-cn-sdlstatic/Linux 支持的共享程序库(lib*.so)技术不仅能够有效利用系统资源,而且还对程序设计带来了很大的便利性、通用性等,因此被各种级别的应用系统广泛采用。 动态链接的共享库是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的:通过动态链接器,将动态共享库映射进应转载 2013-12-05 16:30:52 · 2197 阅读 · 0 评论 -
今天碰到的std::sort 的宕机
http://www.sgi.com/tech/stl/StrictWeakOrdering.html在自己的compare函数Irreflexivityf(x, x) must be false.Antisymmetryf(x, y) implies !f(y, x)Transitivityf(x, y) and f(y, z) imp原创 2014-06-24 20:02:30 · 1377 阅读 · 0 评论 -
Allocator rebind
rebind的本质应该这么说:给定了类型T的分配器Allocator=allocator ,现在想根据相同的策略得到另外一个类型U的分配器allocator ,那么allocator = allocator ::Rebind ::other.之所以要提供rebind界面,是因为容器只知道模板参数名Allocator,而不是其具体实现,容器只知道这样三个事情:1、Alocator是转载 2011-12-23 13:53:04 · 1835 阅读 · 0 评论 -
#include time.h和 #include sys/time.h的区别
交叉编译情况下,两个文件的地址/opt/gcc-4.1.2-glibc-2.4/arm-xscale-linux-gnu/arm-xscale-linux-gnu/include/time.h /opt/gcc-4.1.2-glibc-2.4/arm-xscale-linux-gnu/arm-xscale-linux-gnu/include/sys/time.h转载 2012-04-05 21:32:33 · 5793 阅读 · 0 评论 -
char 与 unsigned char的本质区别
From::http://www.cnblogs.com/qytan36/archive/2010/09/27/1836569.html在C中,默认的基础数据类型均为signed,现在我们以char为例,说明(signed) char与unsigned char之间的区别 首先在内存中,char与unsigned char没有什么不同,都是一个字节,唯一的区别是,char的最高转载 2011-12-22 19:00:31 · 492 阅读 · 0 评论 -
内存池(MemPool)技术详解
概述内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。经典的内存池技术经典的内存池(MemPool)技术,是一种用于分配大量大小相同的小对象的技术。通过该技术可以极大加快内存分配/释转载 2011-12-22 21:16:43 · 2376 阅读 · 0 评论 -
内存池应用
内存池技术详解里面已经很清楚地讲解了写一个内存池的方法了。而这里我结合游戏开发中的使用,说说内存池的应用。首先不管怎么去应用,如果我们不去手动释放占有的资源,那么我们的内存总有用完的那么一天。我们的内存池class MemoryPool{ struct Node { Node():next(NULL){} ~Node():next(NULL){} Node* next原创 2011-12-22 21:48:56 · 1493 阅读 · 0 评论 -
类里面的成员函数指针使用
先看代码#include using namespace std;typedef void (*func)(); //含简单的定义一个函数指针,很容易用这个方法来实现指令,用作各种handler等等void print(){ cout << "print" <<endl;}class A{ typedef void (A::*clas原创 2011-12-22 21:07:56 · 6031 阅读 · 1 评论 -
编写自己的MemoryAllocator
allocatorclass templatetemplate class allocator;Default allocatorAllocators are classes that define memory models to be used by some parts of the Standard Library, and most sp转载 2011-12-23 13:52:21 · 792 阅读 · 1 评论 -
使用__builtin_return_address(level)和objdump查找bug和宕机
有些时候我们很难知道问题出在哪里,特别是类的析构,以及一些函数(调用这个函数的地方很多并且很频繁,不确定调用这个函数的堆栈)的调用,当我们去查找相应功能的代码问题时,如果简单的通过断点不好查找,就可以使用这个办法。所以我们使用gcc的编译特性使用__builtin_return_address(level)打印出一个函数的堆栈地址。其中level代表是堆栈中第几层调用地址,__builtin_原创 2012-03-27 21:36:50 · 6109 阅读 · 0 评论 -
do..while(0)使用
在C中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。 通常,如果转载 2012-03-13 17:47:47 · 958 阅读 · 0 评论
分享