C++
文章平均质量分 76
woodsp
这个作者很懒,什么都没留下…
展开
-
2021-06-23
C++中基类的析构函数为什么要用virtual虚析构函数知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定。关于动态绑定的讲解,请参阅: C++中的动态类型与动态绑定、虚函数、多态实现正题 直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中申请了内存空间,并在其析构函数中对这些内存空间进行释放。假设基类中采用的是非虚析构函数,当删除基类指针指向的派生类对象时就不会触发动态绑定,因而只会...原创 2021-06-23 23:07:04 · 116 阅读 · 0 评论 -
读取PE文件的导入表
读取PE文件的导入表 http://blog.csdn.net/zang141588761/article/details/50401203 Image: PE格式镜像文件,这通常就是我们的exe,dll文件。 下面我们定义一些地址相关的概念,因为PE文件位于磁盘上,同时文件又可以被映射到虚拟内存中,在运行PE文件时它也被系统的Loader加载转载 2016-08-29 18:19:15 · 566 阅读 · 0 评论 -
读取PE文件的导入表
读取PE文件的导入表 转:http://www.cnblogs.com/hoodlum1980/archive/2010/09/08/1821778.html 在上一篇文章里,我使用一个 TreeList 控件,展示了 PE 文件的内容。在那里可充分了解PE的文件头的信息,但是对 section(备注:常见译文为节,段,块)的一些信息我们还没有涉及。比如全局变量等数据,代码转载 2016-08-29 18:16:25 · 1702 阅读 · 0 评论 -
“0d 0a”这两个字符是什么涵义
“0d 0a”这两个字符是什么涵义其实这是从打字机的概念来的:0x0d => /r, carrige return, 指打字头归位的动作0x0a => /n, new line, 指打字机上卷一行的动作Windows 在行尾使用 CRLF (carriage return/line feed, 0d 0a)UNIX 好像只使用 LF(0a)0d------回车符转载 2016-08-29 18:11:08 · 14885 阅读 · 1 评论 -
智能指针 weak_ptr
weak_ptr: weak_ptr是为了配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手而不是智能指针,因为它不具有普通指针的行为,没有重载operator*和->,它的最大作用在于协助shared_ptr工作,像旁观者那样观测资源的使用情况.用法: weak_ptr被设计为与shared_ptr共同工作,可以从一个shared_ptr或者另一个w转载 2015-09-29 10:03:31 · 357 阅读 · 0 评论 -
C++中的内存!(转载)堆 栈 全局/static变量区 常量区
一、在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。堆:就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。转载 2015-07-27 23:56:28 · 1922 阅读 · 0 评论 -
new(std::nothrow) 应用场景
C++ 中 std::nothrow 有什么样的应用场景呢 知乎已经不好玩了,不是你长篇大论就能留… 对于比较健壮的代码来说,nothrow使用的情况比直接new多很多吧。 直接new如果失败要抛出异常的,结果就是为了健壮性代码里到处都是try。 所以一般健壮的分配方式都用new (nothrow) xxx的(当然也有用malloc等的),之后判断NULL就ok 还有在new出现异常,表示内存几经转载 2014-08-28 12:37:50 · 1193 阅读 · 0 评论 -
Visual Assist X 最有用的快捷键
Visual Assist X 最有用的快捷键vax最有用的几个快捷键:1、Alt + G: 在定义与声明之间互跳。2、Alt + O: 在.h与.cpp之间互跳。(O是字母O,不是数字零)3、Alt + Shift + Q:鼠标定位到函数名上,若是在h文件中,按此快捷键会弹出右键菜单,里面有个选项--创建定义;若是在cpp文件中,则按此快捷键会弹出右键菜单,里面有一个选项--创建转载 2013-08-27 23:32:43 · 492 阅读 · 0 评论 -
static在C中作用
(1)隐藏。对于函数来讲,static的作用仅限于隐藏;而对于变量,static还有下面两个作用。(2)static的第二个作用是保持变量内容的持久。(3)static的第三个作用是默认初始化为0。原创 2013-07-04 17:37:24 · 457 阅读 · 0 评论 -
const的作用
const是C语言的一种关键字,起受保护,防止以外的变动的作用!可以修饰变量,参数,返回值,甚至函数体。const可以提高程序的健壮性,你只管用到你想用的任何地方。(一)const修饰参数。const只能修饰输入参数。 1、如果输入参数是指针型的,用const修饰可以防止指针被意外修改。 2、如果参数采用值传递的方式,无需const,因为函数自动产生临时变量复制该参数。转载 2013-07-04 17:45:28 · 424 阅读 · 0 评论 -
GPS测试程序举例
#include #include #include #include #include #include #include int fd;typedef struct GPSINFO{ char utc_time[64]; char status; float latitude_value; char转载 2013-06-29 18:00:53 · 911 阅读 · 0 评论 -
类对象占用空间计算
#include "stdafx.h"class A { int Fun();//一般函数不占对象空间 virtual int Fun2(){printf("class A\n");return 0;}//虚函数占用对象一个指针空间 int c; static int a;//静态成员变量属于类,不占用对象空间。 int b;};str原创 2013-06-26 16:02:44 · 657 阅读 · 0 评论 -
dynamic_cast<>用法
/*这是从网上摘下的例子,主要讲述了 dynamic_cast/*作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理, 即会作一定的判断。 对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针; 对引用进行dynamic_cast,转载 2013-07-11 10:35:58 · 606 阅读 · 0 评论 -
CString实现原理
MFC中CString类的实现在strcore.cpp中,Cstring封装了一个用来存放字符串的缓冲区和对施加于这个字符串的操作。也就是说 ,CString里需要有一个用来存放字符串的缓冲区,并且有一个指针指向该缓冲区,该指针就是LPTSTR m_pchData。但是有些字符串操作会增建或减少字符串的长度,因此为了减少频繁的申请内存或者释放内存,Cstring会先申请一个大的内存块用来存放字符串转载 2013-06-22 16:53:29 · 408 阅读 · 0 评论 -
虚指针
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的转载 2013-06-19 22:21:38 · 596 阅读 · 0 评论 -
using namespace std 说明
对于一个存在着标准输入输出的C++控制台程序,一般会在#include 的下一行发现一句话,using namespace std。这句话其实就表示了所有的标准库函数都在标准命名空间std中进行了定义。其作用就在于避免发生重命名的问题。 1. 关于namespace C++引入了命名空间namespace主要解决了多个程序员在编写同一个项目中可能出现的函数等重名的现象。解决方法就是加上转载 2013-06-18 21:50:09 · 528 阅读 · 0 评论