摘要: MBSC: multibytes charset,多字节字符集:半角字符占一个字节,全角字符占两个字节;USC:unicode charset,Unicode字符集:所有字符无论中英还是全角半角,都是每个字符占两个字节;他们之间的相互转换在win32程序中,用WideCharToMultiByte和MultiByteToWideChar两个函数。代码: 1 #include 2 #include 3 4 #include 5 6 /*** 7 * @author:zanzan101 8 */ 9 10 using namespace std; 11 12 voi... 阅读全文
posted @ 2013-10-25 21:05 铁甲小宝 阅读(501) 评论(0) 推荐(0)
摘要: 学习一下C++的单例模式(Singleton)实现方法,顺便练习一下多线程编程。代码: 1 #include 2 #include 3 4 /*** 5 * @author:zanzan101 6 */ 7 8 class A 9 { 10 public: 11 static A* get_instance() 12 { 13 while(WAIT_OBJECT_0 != WaitForSingleObject(mutex, 0)) 14 Sleep(100); // 设置100毫秒的相应时间 15 16... 阅读全文
posted @ 2013-10-24 16:48 铁甲小宝 阅读(148) 评论(0) 推荐(1)
摘要: 先需要明白一个问题:COW:写时复制,即:Copy-on-Write,当写入时,进行拷贝:无写入操作:共用一份内存有写入操作:拷贝该块出来供修改,并改变进程的内存地址映射,使之映射到到新的内存块地址这是一种内存优化策略,因为,当同一个EXE,或者同一个DLL执行的时候,程序段自然都是相同的;而在调用函数的时候压入栈的数据段,有可能也是相同的,假如确实是相同的,则操作系统会将不同的进程的相同内存块的部分映射到同一地址,其实,程序的执行无论代码或者数据,都是基于地址的,操作系统则可以通过合理的管理这些地址,进行内存空间的优化。还有另一种情况是,假如数据段被某个或者某些进程修改了怎么办呢?此时,会根 阅读全文
posted @ 2013-10-23 01:50 铁甲小宝 阅读(252) 评论(0) 推荐(0)
摘要: 1 构造函数不能是虚函数2 当析构函数不是虚函数时:父指针子对象时:构造是父—>子,析构是父;3 当析构函数不是虚函数时:子指针子对象时:构造是父—>子,析构是子—>父;4 当析构函数是虚函数时:父指针子对象时:构造是父—>子,析构是子—>父;5 构造和析构函数中的虚函数都不能触发多态行为。代码: 1 #include 2 3 /** 4 * @author:zanzan101 5 */ 6 class A 7 { 8 public: 9 A(){10 printf("Ac\n");11 todo();12 }13 virtual ~... 阅读全文
posted @ 2013-10-17 09:28 铁甲小宝 阅读(516) 评论(0) 推荐(0)
摘要: 该说的都在代码及注释中。练习代码: 1 #include 2 #include 3 4 /** 5 * @author:zanzan101 6 */ 7 8 // 这里的参数声明时: 9 // int** arr 调用时错误! 10 // int arr[][] 声明时错误! 11 // int arr[][1] 调用时错误! 12 // 唯一要求准确的条件是一维空间的长度,即需要知道列数,不需要知道行数,需要知道行的长度 13 int sum_array(int arr[][5]) 14 { 15 int sum = 0; 16 for(int i ... 阅读全文
posted @ 2013-10-16 23:53 铁甲小宝 阅读(366) 评论(0) 推荐(0)
摘要: 之前没有注意到的一些关键字,比如WINAPI,CALLBACK,原来是这个__stdcall的意思,而如果不声明__stdcall的话,就按默认的__cdecl处理,而这两者是不能相互转化的。具体原因,看代码吧。代码: 1 #include 2 #include 3 4 /** 5 * @author:zanzan101 6 */ 7 8 // 默认的情况,就是__cdecl类型的函数调用方式 9 void func()10 {11 printf("func\n");12 return;13 }14 15 void __cdecl func_cdecl()16 {17 .. 阅读全文
posted @ 2013-10-16 21:01 铁甲小宝 阅读(151) 评论(0) 推荐(0)
摘要: C++的四种类型转换的练习代码,该说的都在注释中,培养大家看代码的耐心~~代码: 1 #include 2 #include 3 4 /** 5 * @author:zanzan101 6 */ 7 8 using namespace std; 9 10 class A 11 { 12 private: 13 int data; 14 15 // 小知识:引用可以出现在类中,它的初始化和const类型类似,都是必须放到初始化列表中 16 int& ref; 17 public: 18 19 // 小知识:初始化列表中初始化的顺序,... 阅读全文
posted @ 2013-10-16 20:11 铁甲小宝 阅读(220) 评论(0) 推荐(0)
摘要: 下面是我对Windows平台上的多线程开发的一些理解,具体的可以看代码:0 线程直接相关的函数是:ResumeThread;SuspendThread;TerminateThread;1 互斥控制是用互斥锁:MutexCreateMutex;OpenMutex;ReleaseMutex;2 同步控制是用信号量:SemaphoreCreateSemaphore;OpenSemaphore;ReleaseSemaphore;3 互斥也是一种同步,即同步包含互斥,据说还有一个专门用来表示互斥的结构体,目前没有用过。4 创建线程的时候可以传参,一定要注意保护参数。5 多线程并发时的输入输出注意保护其互 阅读全文
posted @ 2013-10-16 17:37 铁甲小宝 阅读(489) 评论(0) 推荐(0)
摘要: 代码: 1 #include 2 #include 3 #include 4 5 using namespace std; 6 7 template 8 class CStack{ 9 private: 10 T* bottom; 11 T* top; 12 int size; 13 public: 14 CStack():top(bottom), bottom(new T[1]), size(1){} 15 ~CStack(){ 16 if(!bottom) 17 delete[] ... 阅读全文
posted @ 2013-10-15 00:28 铁甲小宝 阅读(200) 评论(0) 推荐(0)
摘要: 1 import java.io.*; 2 3 public class TEST1 { 4 public static void main(String args[]) throws IOException 5 { 6 int count = 0; 7 byte buff[] = new byte[1024]; 8 count = System.in.read(buff); 9 String strings = new String(buff, 0, count);10 String stri... 阅读全文
posted @ 2013-10-12 16:06 铁甲小宝 阅读(392) 评论(0) 推荐(0)