
C++学习笔记
phonzia
这个作者很懒,什么都没留下…
展开
-
static变量的两层含义
<br />1、定义局部变量为static,并给予一个初始值,那么这个变量的初始化只会在函数第一次被调用时执行。<br />下面是一个例子,摘自《Thinking in C++》<br />#include <iostream>using namespace std;void func(){ static int i = 0; cout << "i = " << ++i << endl;}int main(){ for(int x = 0; x < 10原创 2011-04-25 11:35:00 · 847 阅读 · 0 评论 -
aix 使用g++编译c++程序的编译选项 -- linux到aix移植经验
-g -maix$(strip $(BIT)) -fconserve-space -Xlinker -bexpfull -Xlinker -brtl -static-libgcc \ -Bstatic -lstdc++ -lsupc++$(strip $(BIT))为机器位数,32或者64以上编译选项可解决AIX上使用g++编译的两个比较大的问题(1)使用全原创 2012-05-08 15:53:56 · 3742 阅读 · 0 评论 -
一个简单的进程间mutex和读写锁类
因为最近一直在做程序使用共享内存的改造,自然也就涉及到进程间同步的问题,以下是一个简单的进程间锁的例子,通过在父进程声明,然后在fork出来的子进程变可以使用这个锁的对象来进程数据访问的互斥控制。#ifndef _SHARE_LOCK_H_#define _SHARE_LOCK_H_//进程间mutex,在父进程定义,fork之后加锁解锁对父子进程间有效class ShareMu原创 2012-06-15 00:03:16 · 5256 阅读 · 0 评论 -
AIX使用g++编译的程序使用异常时的问题
继解决了aix上各种奇怪的缺少编译选项导致的问题之后,我又碰到了新的问题。 程序在不断抛出异常的情况,程序不是很稳定。我使用了一个string来保存异常的信息,然而在实际运行中发现,经过多次异常抛出(有时侯需要很多)后,会出现该string有奇怪的表现。比如说,在重新抛出异常进行拷贝的时候,string的引用变为NULL;或者在打出异常信息的时候,string的引用变为NULL。原创 2012-06-04 16:25:36 · 1304 阅读 · 1 评论 -
aix使用g++编译时一个stl string的问题
当好不容易解决了异常抛出不捕捉等问题之后,我在aix上又碰到了新的问题,同样的代码在linux下运行无误,但在aix下,总是出现core dump,每次core dump的位置均不一样,但是都出现在stl string相关的处理上。并且此问题大部分时候都要程序较长时间运行才会出现,大约要一个小时,处理数据10万条以上。 花费了近一周的时间调试和在网上查找资料,猜测可能是由于str原创 2012-05-09 12:07:55 · 1370 阅读 · 0 评论 -
AIX上使用gcc和g++的一个编译问题的解决
编译时出现以下错误:/tmp//ccoVFPzP.s: line 85771: Only .llong should be used for relocatable expressions./tmp//ccoVFPzP.s: line 85802: Only .llong should be used for relocatable expressions./tmp//ccoVFPzP原创 2012-03-26 14:56:56 · 3428 阅读 · 2 评论 -
c++全局变量使用中的一些注意事项
1、在一个工程中,全局变量最好定义在定义文件(.cpp)中而非头文件(.h)中,这样可以避免因为头文件的重复引用导致的程序连接时连接器报重定义的错误。2、对于全局的字符串常量,如果希望在头文件中定义,应以数组的形式而非指针的形式,否则会出现重定义的连接错误。 例如: const char* GLOBALNAME = "MyName"; // 错误,当头文件被多个定义文原创 2012-03-03 19:17:31 · 788 阅读 · 0 评论 -
用boost在共享内存上创建一个复杂的map
boost的interprocess类提供了在共享内存上创建复杂数据对象和容器的方式,以下是在共享内存上创建一个string map的代码,代码在32位linux上测试通过#include #include #include #include #include #include using namespace boost::interprocess;//类型和allocator的原创 2012-03-03 19:58:00 · 9564 阅读 · 0 评论 -
设计模式学习(一)—— 四要素以及Singleton
设计模式严格来说并不属于计算机科学的范围,而属于软件工程的范围。软件工程中的很多术语都是从建筑工程中借鉴而来,模式同样也是。模式的范围很广,不过一般从技术层面上说的设计模式,指的都是“类”一级的设计模式。一、设计模式的四个基本要素1、名称。2、要解决的问题(或者说应用场景)。3、解决方案。4、应用后的效果。二、模式:Singleton名称:原创 2012-03-03 19:28:20 · 2428 阅读 · 0 评论 -
一个简单的消息队列类(封装system V消息队列)
基本的思想是,1、将消息队列封装成一个类,可以简单地控制消息队列的建立、收发和删除。2、更改消息协议时,不需要修改收发的类。以下是代码,使用模板来达到上述第二点的要求,只要按规则定义了消息结构,则可以复用此消息队列的代码。因为使用了模板,所以使用了hpp头文件,将类和其成员函数都定义在hpp文件里,使用时只需要包含此头文件就可以了。//DMMsgQueue.hpp#i原创 2012-07-03 12:58:02 · 2773 阅读 · 0 评论