随笔分类 - C++
摘要:1. 静态库lib和动态dll的区别 1.1 项目类型 VS在建Win32项目时,有以下选项: windows应用程序 控制台应用程序 DLL 静态库 最后两个类型:DLL和静态库,这两种项目类型是不可以单独运行的,必须在Windows应用程序调用他们执行,是提供的库函数而已。 1.2 两种lib的
阅读全文
摘要:什么是lib文件,lib和dll的关系如何 (1)lib是编译时需要的,dll是运行时需要的。如果要完成源代码的编译,有lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。(2)一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就连接到应用程
阅读全文
摘要:结构体简介结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性,有了结构体,我就可以更好抽象描述一个类别,个人感觉类就是由结构体发展而来的。
阅读全文
摘要:DllMain 跟exe有个main或者WinMain入口函数一样,DLL也有一个入口函数,就是DllMain。以“DllMain”为关键字,来看看MSDN帮助文档怎么介绍这个函数的。 简介 The DllMain function is an optional method of entry in
阅读全文
摘要:1. 定义导出函数指针 //定义函数指针 typedef HRESULT (_stdcall *Func) (REFCLSID , REFIID , LPVOID*); Func g_DllGetClassObject=NULL; 2.导出COM组件这个DLL 的 DllGetClassObject
阅读全文
摘要:前言:我们知道windows os上有很多的api,编程语言对os进行操作,无论什么语言,最终都是通过windows api 的。 在windows编程中,有个概念是句柄,句柄指向资源(一切可以利用的物理的逻辑的资源),其中文件操作,可以将文件映射到内存,此处的文件是广义的文件,可以指内存对象,邮件
阅读全文
摘要:单例模式需要注意的问题: 1、static实例保证只有一个实例 2、需要C++类外初始化实例、线程锁等 3、私化构造函数,关闭赋值运算符=和拷贝构造函数 4、应当有Releas函数 5、应该考虑线程安全问题 下面是懒汉模式的实现: #include <thread> #include <mutex>
阅读全文
摘要:1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问 4.stack 底层一般用23实现,封闭头部即可,不用v
阅读全文
摘要:传递临时对象作为线程参数 创建的工作线程不止一个,线程根据编号来确定工作内容。每个线程都需要知道自己的编号。线程中有很多容易犯错的写法 例子1 多线程需要执行的函数: void my_print(const int &i, char* p_mybuff) { cout << i << endl; c
阅读全文
摘要:Win32中的四种同步方式 在WIN32中,同步机制主要有以下几种:(1)事件(Event);(2)信号量(semaphore);(3)互斥量(mutex);(4)临界区(Critical section)。 一、临界区 临界区(Critical Section)是一段独占对某些共享资源访问的代码,
阅读全文
摘要:邮件槽提供了不可靠的单向数据传输,但是邮件槽支持多播。邮件槽服务器使用CreateMailslot函数来创建一个邮件槽。C热阿特Mailslot接受形如"\\.\\Mailslot\MailslotName"(客户可以指定"\\.\"为本地计算机)的UNC名称作为一个输入的参数。如命名管道一样,邮件
阅读全文
摘要:Windows下用管道通信(pipe)实现进程间数据共享管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。管道分为匿名管道和命名管道。
阅读全文
摘要:3、进程间通信方式 进程间通信又称IPC(Inter-Process Communication),指多个进程之间相互通信,交换信息的方法。根据进程通信时信息量大小的不同,可以将进程通信划分为两大类型: 1、低级通信,控制信息的通信(主要用于进程之间的同步,互斥,终止和挂起等等控制信息的传递) 2、
阅读全文
摘要:前面定义的Stack中,第二个模板参数要求支持back,push_back,pop_back等接口。如果我们已经有一个自定义的容器Array,它的定义如下: template<typename T, typename Allocator = std::allocator<T>> struct Arr
阅读全文
摘要:std::ref只是尝试模拟引用传递,并不能真正变成引用,在非模板情况下,std::ref根本没法实现引用传递,只有模板自动推导类型时,ref能用包装类型reference_wrapper来代替原本会被识别的值类型,而reference_wrapper能隐式转换为被引用的值的引用类型。 std::r
阅读全文