05 2012 档案

摘要:C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容chara='A';//globalvariablevoidmsg(){printf("Hello\n");}下面是main.c的内容intmain(void){externchara;//externvariablemustbedeclaredbe 阅读全文
posted @ 2012-05-16 09:08 笑笑小白 阅读(357) 评论(0) 推荐(0)
摘要:数组指针是指向数组的, 如: int a[3][3],(*p)[3]; p=a; 这里(*p)[3]用于告诉编译系统,它是一个指针,指向一个长度为3的整型数组。这样在用指针访问其所指向的内存单元的时候就可以用*(*(p+i)+j)来表示a[i][j]; 若:int a[3][3],*p; p=a; 就需用:*(p+3*i+j)来表示a[i][j]. 指针数组是这样一种特殊的数组:它的每一个数组元素都是一个指针。 如:int *p[3]; *p[0],*p[1],*p[2]都是一个指针。int (*p)[10]; 定义了一个数组指针,... 阅读全文
posted @ 2012-05-16 08:55 笑笑小白 阅读(420) 评论(1) 推荐(1)
摘要:C++语言一直被认为是复杂编程语言中的杰出代表之一,不仅仅是因为其繁缛的语法规则,还因为其晦涩的术语。下面要讲的就是你的老熟人—new:它是一个内存管理的操作符,能够从堆中划分一块区域,自动调用构造函数,动态地创建某种特定类型的数据,最后返回该区域的指针。该数据使用完后,应调用delete运算符,释放动态申请的这块内存。如果这就是你对new的所有认识,那么我不得不说,你依旧被new的和善外表所蒙蔽着。看似简单的new其实有着三种不同的外衣。是的,你没有看错,也不用感到惊奇,一个简单的new确实有三种不同的形态,它扮演着三种不同的角色,如下所示:newoperator operatornew p 阅读全文
posted @ 2012-05-09 16:49 笑笑小白 阅读(676) 评论(0) 推荐(0)
摘要:#pragma once#ifndef _MEMORY_POOL_#define _MEMORY_POOL_#include <list>#include <Windows.h>using std::list;template <typename Type>class MemoryPool{private:int m_nMaxCount;int m_nFreeCount;list <Type*> m_pMemList;Type * m_pType;CRITICAL_SECTION m_csMemLock;public:MemoryPool(int 阅读全文
posted @ 2012-05-09 14:52 笑笑小白 阅读(413) 评论(0) 推荐(0)
摘要:6.1 自定义内存池性能优化的原理书名:《C++应用程序性能优化》作者:冯宏华、徐莹、程远、汪磊 等编著出版社:电子工业出版社出版日期:2007 年 03 月如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链表的节点,都需要从内存堆上分配或者释放一定的内存;在维护一个动态数组时,如果动态数组的大小不能满足程序需要时,也要在内存堆上分配新的内存空间。6.1.1 默认内存管理函数的不足利用默认的内存管理函数new/delete或malloc/free在堆上 阅读全文
posted @ 2012-05-09 14:46 笑笑小白 阅读(1341) 评论(0) 推荐(0)
摘要:#ifndef _MEMPOOL_H_#define _MEMPOOL_H_/*本类封装了一个内存池,采用模板类,模板参数就是内存池中分配的对象类型本类主要用链表来实现,适用于固定大小的内存块分配*/#include <vector>using std::vector;template<typename T>class CMemPool{ struct _MemNode { _MemNode *pPrev; char data[sizeof(T) - sizeof(_MemNode*)]; }; struct _MemBlock { _MemBlock *pPrev; 阅读全文
posted @ 2012-05-09 14:30 笑笑小白 阅读(646) 评论(0) 推荐(0)
摘要:用free -m查看的结果:# free -m total used free shared buffers cachedMem: 504 471 32 0 19 269-/+ buffers/cache: 183 321Swap: 996 0 996查看/proc/kcore文件的大小:# ll -h /proc/kcore-r-------- 1 root root 512M 10月 26 20:40 /proc/kcore在Linux下查看内存我们一般用free命令:[root@scs-2 tmp]# free total use... 阅读全文
posted @ 2012-05-08 18:11 笑笑小白 阅读(204331) 评论(0) 推荐(8)
摘要:log4cplus是一款优秀的基于C/C++的开源日志库。log4cplus具有线程安全,不用但心在多线程状态下写日志问题;使用灵活,可通过配置文件设置日志级别下输出位置,还可以在程序运行时动态设置日志输出级别,随心所欲掌控日志的输出;以及多粒度控制的特点。通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期; 可以选择将信息输出到屏幕、文件、NT event log、甚至是远程服务器;通过指定策略对日志进行定期备份。可以满足大部分开发者对日志系统需求,功能全面。下载地址:http://sourceforge.net/projects/log4cplus/files/log 阅读全文
posted @ 2012-05-07 15:08 笑笑小白 阅读(20314) 评论(1) 推荐(0)
摘要:StdLogger.h#ifndef STDLOGGER_H#define STDLOGGER_H#include <log4cplus/logger.h>#include <log4cplus/configurator.h>#include <log4cplus/helpers/loglog.h>#include <log4cplus/consoleappender.h>#include <log4cplus/fileappender.h>class StdLogger{public: StdLogger(); virtual ~S 阅读全文
posted @ 2012-05-04 18:20 笑笑小白 阅读(823) 评论(0) 推荐(0)
摘要:log4cplus 的configure.h 中注释如下:/** * Read configuration from a file. <b>The existing configuration is * not cleared nor reset.</b> If you require a different behavior, * then call {@link BasicConfigurator#resetConfiguration * resetConfiguration} method before calling ... 阅读全文
posted @ 2012-05-04 09:52 笑笑小白 阅读(4477) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2012-05-03 11:47 笑笑小白 阅读(39) 评论(0) 推荐(0)
摘要:int ACE_TMAIN(int argc, ACE_TCHAR* argv[]){ int port=30000; int conPortNum=5000; std::string conf="server.conf"; bool mode=true; bool display=true; ACE_Get_Opt cmdLine(argc,argv,"P:C:M:D:"); int cnt=0; int opt; while((opt=cmdLine())!=-1){ switch(opt){ case 'P': port=atoi( 阅读全文
posted @ 2012-05-03 10:38 笑笑小白 阅读(336) 评论(0) 推荐(0)
摘要:#编译设置export CXX:=g++#调试export CXXFLAGS:=-g2 -O0export CXXFLAGS:=-g0 -O2#export LDFLAGS:=-static#ACE目录export CUR_DIR:=$(shell pwd)export ACE_ROOT:=${CUR_DIR}/../ACE#SPEEX目录export SPEEXROOT:=${CUR_DIR}/../speex#Codec目录export CODECROOT:=${CUR_DIR}/Codec#Packet目录export PACKETROOT:=${CUR_DIR}/Packet#公共库目 阅读全文
posted @ 2012-05-03 09:04 笑笑小白 阅读(1086) 评论(0) 推荐(0)
摘要:log4cplus的包裹类(log4cplus Wrapper)头文件:/***********************************************************************Copyright(C)2008--AllRightsReserved**文件名称:LoggerModule.h*摘要:日志包裹类,日志模块的接口**作者:yanglinbo,*修改:查看文件最下方.************************************************************************/#ifndef__LoggerModu 阅读全文
posted @ 2012-05-02 17:31 笑笑小白 阅读(2500) 评论(1) 推荐(1)