C/C++
文章平均质量分 63
假装80后
一个不念过去,不畏将来的程序员
展开
-
Usage sample of unix pipe
-- 无名管道 #include int pipe(int fd[2]) #无名管道通常不用在进程间通信。 -- 命名管道 #include #include int mkfifo(const char * pathname, mode_t mode)原创 2010-01-11 14:39:00 · 710 阅读 · 0 评论 -
Usage sample of unix Message Queues
#include int msgctl(int msqid, int cmd, struct msqid_ds *buf);int msgget(key_t key, int msgflg);int msgrcv(int msqid, void *msg_ptr, size_t msg_sz, long int msgtype, int msgflg);int原创 2010-01-11 14:26:00 · 690 阅读 · 0 评论 -
Usage sample of unix semaphore
There are two types of semaphore on unix system: -- System V信号量(命名信号量) #include int semctl(int sem_id, int sem_num, int command, ...);int semget(key_t key, int num_sems, int sem_flags);i原创 2010-01-10 14:04:00 · 948 阅读 · 0 评论 -
C++ - 动态调用共享库函数
1. 需求. 我们需要调用一个函数 std::string getValue(int index) 这个函数定义在库t1.so里面 2. t1.so #:cat t1.C#include extern "C"std::string getValue(int index){ switch(index)原创 2010-01-05 17:10:00 · 2235 阅读 · 0 评论 -
C++ - Using
1. full-qualified name std::cout 2. "using" keyword using std::cout;using std::endl; cout 3. "using namespace" keyword using namespace std; cout原创 2009-12-31 09:25:00 · 728 阅读 · 0 评论 -
C++ - map key值比较
#include #include #include #include using namespace std;class A{public: A() { cout public: // 用户只需要重载这个函数, 就可以进行map的操作。 bool operator {原创 2009-12-31 10:43:00 · 4835 阅读 · 0 评论 -
C++ - 类型转换 static_cast, dynamic_cast, reinterpret_cast, const_cast
-- static_cast用于类层次结构中基类和子类之间转换。(基类和子类之间的转换通常建议用dynamic_cast) 进行上行转换(把子类的指针转换成基类)是安全的; 进行下行转换(把基类的指针转换成子类)时,由于没有动态类型检查,所以是不安全的。用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性也要开发人员来保证。 -原创 2009-12-30 14:35:00 · 739 阅读 · 0 评论 -
C++ - 拷贝构造函数和赋值操作符
注意, 如果不主动编写拷贝构造函数和赋值函数,编译器将以位拷贝的方式自动生成这两个缺省的函数。 -- 定义 class CC{public: CC(const CC& cc) { cout CC& operator= (const CC&) { cout public:...}; -- 什么时候使用拷贝构造函数, 什原创 2009-12-29 11:32:00 · 1001 阅读 · 0 评论 -
C++ - nothrow
This constant value nothrow is used as an argument for operator new and operator new[] to indicate that these functions shall not throw an exception on failure, but return a null pointer instead原创 2009-12-29 09:45:00 · 1291 阅读 · 0 评论 -
C++ - 虚继承
class A ^ | (virtual) |class B p=24368,*p=21668p=2436c,*p=bp=24370,*p=21674p=24374,*p=ap=24378,*p=1 class A ^ | (virtual) |class B ^ | (v原创 2009-12-30 10:35:00 · 505 阅读 · 0 评论 -
C++ - 多继承
class B class C ^ ^ / / / / / / class D p=24500,*p=217f8p=24504,*p=bp=24508,*p=21804p=2450c,*p=cp=24510,*p=d原创 2009-12-30 10:24:00 · 627 阅读 · 0 评论 -
C++ - 单继承
class A ^ |class B p=41340,*p=21a48p=41344,*p=ap=41348,*p=1p=4134c,*p=bp=41350,*p=2 class A ^ |class B ^ |class C p=41340,*p=21a48p=4134原创 2009-12-30 10:14:00 · 677 阅读 · 0 评论 -
C++ - 类成员初始化顺序
-- 先基类, 再成员, 然后自己 class A {public: A() { cout };class B {public: B() { cout B(int i) { cout };class C {public: C() { cout };class CC: p原创 2009-12-29 10:58:00 · 3049 阅读 · 0 评论 -
C++ - Inheritance type: public, protected, private
-- Members. +------------+----------------+--------------+| type | superclass + subclass |+------------+----------------+--------------+| public | public | public原创 2009-12-21 10:22:00 · 647 阅读 · 0 评论 -
Usage sample of unix mutex and conditional
pthread_mutex_initpthread_mutex_destroypthread_mutex_tpthread_mutex_lockpthread_mutex_unlockpthread_mutex_trylock pthread_cond_t _cond;retVal = pthread_cond_ini原创 2010-01-10 14:16:00 · 788 阅读 · 0 评论 -
如何删除数组指针
Sun/Sparc 环境 int main( void ){ int size = 256-8; char *ch1 = new char[size]; char *ch2 = new char[size]; char *ch3 = new char[size]; printf("ch1=%x,size=%d/n",ch1,size);原创 2010-05-25 17:23:00 · 6286 阅读 · 0 评论 -
C++ char和unsigned char
signed char 和 unsigned char 的区别1. 如果它们只是作为字符处理,那么是没有区别2. 只有当它们被作为数字值处理的时候,考虑到符号位扩展的时候是有区别的 char ch1 = -8; unsigned char ch2 = -8; printf("signed=%d, unsigned=%d\n", ch1, ch2原创 2017-03-05 14:34:27 · 5084 阅读 · 0 评论 -
C++ std::string能否存储二进制字符
1. std::string 是否可以包含二进制字符,答案是能 std::string ss = std::string("XXX") + '\2' + "YYY" + '\11' + "ZZZ"; std::cout // len=[11],data=[XXXYYY ZZZ]2. std::string 是否可以包含字符0,答案是原创 2017-03-05 14:06:55 · 7260 阅读 · 0 评论 -
C++ ostream 常用格式
注意一点: std::setw只对下一个输出值有效,其他选项所有随后的输出都有效,比如:case: std::cout 可见"AAAA"被扩展成了6个字符宽度,而BBBB没有被扩展;因为std::setw只对紧跟着的输出有效, 即只对输出"AAAA"有效,而对"BBBB"输出无效。虽然std::setfill对输出"BBBB"还是有效的, 但是因为长度限定, "BBBB"的输出原创 2017-03-05 13:58:25 · 6665 阅读 · 0 评论 -
How to transfer a socket between process
This is a sample program to transfer a socket from one process to another process using unix domain socket.ContentListenerThis is a TCP listener server, which listen on a well-known port, to原创 2016-10-20 22:06:07 · 448 阅读 · 0 评论 -
C++ call dlopen function
DescriptionThis is a sample of how C++ call a dlopen function.1. mypgm.cpp : the main program2. mylib.cpp: the main library* mypgm.cpp 1 #include 2 #include 3原创 2016-10-17 22:51:14 · 643 阅读 · 0 评论 -
Implement a program could only be launched by
Description1. caller process passing a string value to callee process, using command line callee --id idstring2. caller pass the MD5 string through stdin3. callee get idstring from comm原创 2016-10-17 22:48:09 · 434 阅读 · 0 评论 -
C/C++ launch a subprocess and wait it finish
This is a usage sample of how to fork a sub-process and wait the sub-process ended, and check its return code.1. main.cpp2. sub.cppmain process will fork a process to execute the sub pro原创 2016-10-17 22:55:02 · 643 阅读 · 0 评论 -
C/C++ launch a subprocess and get its output
This is an usage sample of how to call a sub-process and get its screen output.1. main.cpp2. sub.cppmain will call sub-process sub, and get all its screen output.g++ sub.cpp -o sub原创 2016-10-17 22:53:47 · 832 阅读 · 0 评论 -
C++ datetime calculation api
DescriptionA sample of how use C++ localtime/mktime to implement datetime calculation, for example plus/minus a few days, months, years, etc.Source Code:#include #include #include v原创 2016-10-17 22:49:50 · 338 阅读 · 0 评论 -
A simple memory allocation algrithim
PurposeToo frequent memory operation, such as malloc() and free(), can downgrade application performance. In order to improve the memory allocation performance, eliminate the impact of memory ma原创 2016-10-17 22:42:19 · 434 阅读 · 0 评论 -
C++和Java对类继承的差异
#include class Base{public: int i; Base() { i = 99; amethod(); } virtual void amethod() { printf("Base.amethod()\n"); }};class Derived : p原创 2013-02-23 10:46:03 · 2439 阅读 · 0 评论 -
宏_M_IX86,_M_AMD64和_M_X64
_M_IX86 : 32bit处理器_M_AMD64 : 64bit AMD处理器 (VC2008以前) _M_X64 : 64bit AMD处理器(VC2008及以后)_M_IX64 : 64bit Itanium处理器_WIN32 : Defined for both 32bit and 64bit processor_WIN64 : Defined for 64bit processorReferenceshttp://msdn.microsoft.com/en-us/library/b0084kay原创 2010-11-01 15:31:00 · 12604 阅读 · 1 评论 -
MacOS 64bit long/int
little-endin, intel$ cat t.c#include #include #include #include struct tt {int i1;int i2;int i3;int i4;int i5;};int main(int argc, char* argv[]){struct tt t;t.i1=1;t.i2=2;t.i3=3;t.i4=4;t.i5=5;long *ll = (long *)&(t.i原创 2010-09-09 18:25:00 · 1049 阅读 · 0 评论 -
C++ explicit
<br />关键字explicit<br />和构造函数一起使用, 指明构造函数只能显示使用;<br />目的是为了防止单参数的构造函数进行不必要的隐式转化. <br /><br /><br />举个例子: <br />class A <br />{ <br />public: <br /> A(int x): _x(x) {};<br /> // explicit A(int x): _x(x) {};<br />private: <br /> int _x;原创 2010-06-09 12:05:00 · 617 阅读 · 0 评论 -
指针+1的讨论
wwmain(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d/n",*(a+1),*(ptr-1));}# ./a.out2,5 原则: 指针的加操作, 是指针对应数据类型的大小的加, 比如char *p; p++; // p + sizeof(char原创 2010-02-24 15:03:00 · 702 阅读 · 0 评论 -
issue on sizeof()
#include #include struct AType{ int i; char ch;};struct AType a;struct BType{ char ch; int i;};struct BType b;void main(){ printf("sizeof(a)=%原创 2010-02-24 14:09:00 · 644 阅读 · 0 评论 -
ACE - ACE_Event_Handler ACE_Reactor
ACE_Reactor是反应堆的概念- ACE_Reactor * ACE_Reactor::instance (void); 将返回缺省的反应堆。- ACE_Reactor * ACE_Reactor::instance (ACE_Reactor *, int delete_reactor = 0); 设置新的缺省反应堆, 并把旧的返回 下面的代码例子是重定义缺省的反应堆AC原创 2009-12-16 09:24:00 · 2438 阅读 · 1 评论 -
Sample of C++ read/write a text file
#include #include using namespace std;int main(){ const char *filename = "t.txt"; ofstream ofile; ifstream ifile; //write ofile.open(filename); ofile原创 2009-06-05 17:16:00 · 2106 阅读 · 0 评论 -
TAO ORB example
$>find ./././echoServer.cpp./echoClient.cpp./Makefile./idl./idl/echo.idl./idl/Makefile 1. set build environment -. set compiler -. set TAO environment 2. build idl原创 2009-04-28 15:21:00 · 1773 阅读 · 0 评论 -
gethostbyname, getipnodebyname, getaddrinfo, InetAddress.getByName
1. gethostbyname(...) - used only for IPv4. - cc gethostbyname.c -lnsl -:cat gethostbyname.c #include #include #include #include #include #include #i原创 2009-04-24 16:11:00 · 2017 阅读 · 1 评论 -
IPv4/IPv6
IPv4 onlyIPv4 & IPv6Descriptioninet_addr interpret character strings that represent numbers expressed in the IPv4 standard `. notation, returning numbers suitable for use a原创 2009-04-17 15:34:00 · 1013 阅读 · 0 评论 -
DNS check
1. compile cc ns.c -lresolv -lsocket -lnsl2. run It will print out local node name and its full dsn name. (uname -n) It DSN work failed, a error string will be printed out, and full d原创 2009-04-20 11:02:00 · 1271 阅读 · 0 评论 -
CORBA ORB POA ACE TAO
1. CORBA 是协议, 是规范2. ACE 是一组C++函数库集合3. TAO TAO是一种C++ ORB和POA, 实现基于ACE。(应该是CORBA的一个实现)4. ORB, (我觉得也是一种协议??) ORB 对象请求代理 (ORB) 是 CORBA 的核心组件。CORBA 对象之间从不直接进行通信,对象通过远程桩对运行在本地计算机上的 ORB 发出请求。本地 O原创 2009-01-09 15:44:00 · 2980 阅读 · 0 评论 -
Sun SPARC 内存存储模式
Sun SPACK 是big-endian host{/u/XXX/memLeak}:cat t.c#include #include #include void main(){ int *pi = 0; long *pl = 0; char *p1 = (char *)malloc(40); printf("p1 = %lx原创 2008-09-30 14:16:00 · 920 阅读 · 0 评论