![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
luyumiao1990
这个作者很懒,什么都没留下…
展开
-
DLL的两种加载方式——静态加载和动态加载
案例简述在某项目中,需要使用两个不同版本的HCNetSDK库,我们通常使用的静态加载DLL的方式不能满足该需求,故用到动态加载DLL的方式。背景技术及术语解释静态加载:也称隐式调用,指在运行程序之前由操作系统的加载器将DLL和EXE一起加载到内存里。注意这里与程序的静态链接区别开来,静态链接发生在编译过程之中,而DLL的静态加载是发生在程序运行之前。动态加载:也称显示调用,指应用程序运行过程中程序自己完成对DLL的加载和卸载(DLL加载—DLL函数地址获取—DLL释放),应用程序在执行过程...原创 2020-07-07 16:32:11 · 9518 阅读 · 1 评论 -
C++ win32、win64、linux32、linux64中各数据类型占字节数
win32 编译器: win64 编译器: linux32: linux64: ...原创 2020-05-28 13:58:58 · 524 阅读 · 0 评论 -
CentOS6 升级gcc版本以支持C++11
【转自:https://blog.csdn.net/weixin_38642130/article/details/86412609】解决问题在编译安装的时候碰到“configure: error: ***A compiler with support for c++11 language features is required.”是因为编译器版本不支持c++11,所以需要安装高版本gc...转载 2020-02-29 22:13:27 · 1194 阅读 · 0 评论 -
C++ 文件操作(文件读写)
在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:(1)插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout(2)析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>原创 2016-11-08 20:08:40 · 357 阅读 · 0 评论 -
C++编程规范
1. 一般双目运算符前后加空格,单目运算符前后不加空格; if、for、while、switch等与后面的括号间应加空格,使if等关键字更为突出、明显; 括号内侧(即左括号后面和右括号前面)不需要加空格,多重括号间不必加空格,因为在C/C++语言中括号已经是最清晰的标志了;2. 头文件的最后一行为空行,以便消除GCC警告。3.原创 2016-11-08 20:31:04 · 554 阅读 · 0 评论 -
头文件互包含问题
.h文件中不能出现头文件互包含(否则会编译不通过),.cpp文件可以随意包含头文件。然而,若A.h要用到B.h的东西,B.h也要用到A.h的东西,可以在B.h中申明:class A;在B.cpp中再进行#include"A.h"原创 2016-11-08 20:31:52 · 636 阅读 · 0 评论 -
堆和栈的区别
1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。堆和栈的理论知识 2.1申请方式 stack: 由系统自动分配。 例如,原创 2016-11-09 09:21:46 · 223 阅读 · 0 评论 -
Windows网络常用命令
nbtstat -a IP地址 :根据IP地址查询计算机名tracert IP地址 :路由跟踪,确定IP数据报访问目标所采取的路径原创 2016-12-26 15:33:10 · 361 阅读 · 0 评论 -
字符串转16进制串
std::string CSession::MemToHex(const void* src, size_t size, bool upper/* = true*/,char tag/* = 0*/){ std::string strDest; strDest.reserve(2*size); unsigned char* pSrc = (unsigned ch...原创 2019-07-25 17:15:02 · 420 阅读 · 0 评论 -
字符串
1. CString字符串类型中提取以特定字符分隔的子串 使用库函数AfxExtractSubString CString str = “sssdf sfds jieuri lj122 98098”; CString strGet(_T("")); CStringArry strArry; while (AfxExtract原创 2016-11-08 20:11:54 · 134 阅读 · 0 评论 -
STL earse操作
STL中迭代器删除时,要注意 earse后迭代器释放了,使用方法: map::iterator it = pDev->m_LoginInfo.begin(); for(;it!= pDev->m_LoginInfo.end();) { HPR_UINT32 uiNowTime = HPR_Ge原创 2016-11-08 20:10:34 · 396 阅读 · 0 评论 -
C++ 启动和停止电脑中的服务
#define SERVICE_NO_ERROR 0#define OPEN_SCMANAGER_ERROR 2#define OPEN_SERVICE_ERROR 3#define QUERY_SERVICESTATUS_ERROR 4#define STOP_SERVICE_ERROR 5#define START_SERVICE_ERROR 6int CPmsAndOneCa原创 2016-11-08 20:09:24 · 2547 阅读 · 0 评论 -
关于C++中类的占用内存大小
所有的函数都是存放在代码区的,不管是全局函数,还是成员函数。原创 2014-04-17 18:35:03 · 1230 阅读 · 2 评论 -
C++函数和变量的声明、定义的原因和作用
声明是告诉编译器一些信息,以协助编译器进行语法分析,避免编译器报错。而定义是告诉编译器生成一些代码,并且这些代码将由连接器使用。即:声明是给编译器用的,定义是给连接器用的。这个说明显得很模糊,为什么非要弄个声明和定义在这搅和?那都是因为C++同意将程序拆成几段分别书写在不同文件中以及上面提到的编译器只从上朝下编译且对每个文件仅编译一次。 编译器编译程序时,只会一个一个源文件编译,并分别转载 2014-04-17 16:49:24 · 2247 阅读 · 1 评论 -
C/C++程序内存分配详解
一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。转载 2014-04-17 21:41:32 · 361 阅读 · 0 评论 -
关于字符串在内存中存放位置问题
#include #include #include using namespace std;int main(){ char str1[] = "hello"; char str2[] = "hello"; char *str3 = "hello"; char *str4 = "hello"; char * str5 = new char[10]; char * s原创 2014-04-18 17:29:47 · 664 阅读 · 1 评论 -
函数之重载函数
编译器如何解析重载函数的?发现函数void print(int i) 编译之后为:(注意它的函数签名变为——_Z5printi)原创 2014-04-22 22:45:22 · 405 阅读 · 1 评论 -
#include<file.h>与#include "file.h"区别
#include 直接在标准库里查找file.h#include "file.h" 编译器在源文件所在的目录(当前路径)中搜索file.h,如果找不到再从库里查找个 分隔原创 2014-04-10 15:40:06 · 2336 阅读 · 0 评论 -
C++拷贝构造函数的几个细节
拷贝构造函数是C++最基础的概念之一,大家自认为对拷贝构造函数了解么?请大家先回答一下三个问题:1. 以下函数哪个是拷贝构造函数,为什么?X::X(const X&); X::X(X); X::X(X&, int a=1); X::X(X&, int a=1, b=2); 2. 一个类中可以存在多于一个的拷贝构造函数吗?3转载 2014-05-16 21:02:19 · 649 阅读 · 1 评论 -
字节对齐与结构体大小
#pragma pack (n) /*指定按n字节对齐*/ 不写这句默认n =8设真正的对齐长度为m字节如果n>结构体中数据类型(包括类类型)长度最大的数据类型长度,m = 结构体中最大数据类型长度否则 m = n总之,真正的对齐长度m为指定对齐长度n与结构体中最大类型长度中的较小值。规则:1. 结构体变量的首地址能够被m所整除;2. 结构体每个原创 2014-05-10 11:36:28 · 684 阅读 · 2 评论 -
char **传参
char **qName = new char*[2]; qName[0] = new char[MAX_STRLEN]; qName[1] = new char[MAX_STRLEN]; strncpy(qName[0],"c_device_index_code",MAX_STRLEN -1); strncpy(qName[1], "i_channel_no"原创 2016-11-08 20:06:45 · 1805 阅读 · 0 评论 -
可变参数函数
要理解可变参数,首先要理解函数调用约定(http://en.wikipedia.org/wiki/Calling_convention), 为什么只有__cdecl的调用约定支持可变参数,而__stdcall就不支持?实际上__cdecl和__stdcall函数参数都是从右到左入栈,它们的区别在于由谁来清栈,__cdecl由外部调用函数清栈,而__stdcall由被调用函数本身清栈,原创 2016-11-08 20:07:43 · 148 阅读 · 0 评论 -
宏与函数的区别
1.带参数的宏定义的参数没有类型,原创 2014-04-16 18:04:17 · 725 阅读 · 0 评论