草庐IT

虚拟机高可用

全部标签

c++ - 避免对非虚拟析构函数进行对象切片

我正在为智能指针编写代码作为练习。使用在线教程(1,2)我开发了一个带有引用计数的普通智能指针类。问题是我无法弄清楚以下内容:whenthesmartpointerdetectsthatnomorereferencesexisttoaparticularobject,itmustdeletetheobjectviaapointertotheoriginaltype,evenifthetemplateargumentofthefinalsmartpointerisofabasetype.Thisistoavoidobjectslicingfornon-virtualdestructors

c++ - 为什么这个虚拟调用模棱两可?

在下面的代码中,我不明白为什么报告对“应用”的调用不明确。提供的参数只有一个可接受的匹配项(A_applicator::apply)。请注意,我非常感谢对标准的引用,这将帮助我确定导致这种歧义的解析流程。structA{};structB{};structA_D:publicA{};structA_applicator{virtualvoidapply(A){}};structB_applicator{virtualvoidapply(B){}};structdual_applicator:publicB_applicator,publicA_applicator{};intmain(

二进制安全虚拟机Protostar靶场(7)heap2 UAF(use-after-free)漏洞

前言这是一个系列文章,之前已经介绍过一些二进制安全的基础知识,这里就不过多重复提及,不熟悉的同学可以去看看我之前写的文章heap2程序静态分析https://exploit.education/protostar/heap-two/#include#include#include#include#includestructauth{#定义了一个名为auth的结构体charname[32];#定义了一个名叫name的变量,能存储32字节数据intauth;#定义了一个整数变量auth};structauth*auth;#auth指针用来指向structauth类型的对象char*service;

c++ - 使用所有可用的线程不好的做法?

我最近又开始使用C++并编写了一个简单的测试应用程序,用于通过整数值矩阵找到最佳路径。为了提高此应用程序的性能,我使用C++11std::thread实现了多线程。unsignedintthreadCount=std::thread::hardware_concurrency();std::vectorthreads;for(unsignedintthreadIndex=0;threadIndex截至目前,我只是确定可用线程的总数并为每个线程执行我的测试。这非常有效,但它让我开始思考......尝试为给定系统使用所有可用线程是一种不好的做法吗?除了这个简单的示例之外,多线程的生产级应用

c++ - 没有可用于新 C++ 项目的 MFC 模板 - Visual C++ Express

我在发布这篇文章之前一直在谷歌上搜索,但我没能找到关于这个主题的任何内容..但我认为这不是一个非常棘手的问题所以请原谅发布:o)。为了一份新工作,我正在学习C++,并遵循一些教程。特别是一个关于MFC的,它展示了如何创建项目、选择MFC应用程序等。所以,我在vista和Win7上都安装了VisualC++Express2010,两次我都遇到了同样的问题:当我进入新项目时,我没有“MFC”菜单。该教程中的一些屏幕截图以及VisualC++2010上的其他一些屏幕截图清楚地表明它可以存在。更具体地说,在左角我有“已安装的模板”,然后是“VisualC++”和“CLR”、Win32”和“常规

JVM-虚拟机栈

虚拟机栈Java虚拟机栈(JavaVirtualMachineStack)采用栈的数据结构来管理方法调用中的基本数据,先进后出(FirstInLastOut),每一个方法的调用使用一个栈帧(StackFrame)来保存。接下来以这段代码为例JavapublicclassMethodDemo{publicstaticvoidmain(String[]args){study();}publicstaticvoidstudy(){eat();sleep();}publicstaticvoideat(){System.out.println("吃饭");}publicstaticvoidsleep()

c++ - 虚拟继承情况下类的大小

谁能解释一下在涉及虚函数的虚继承的情况下类的大小。classA{chark[3];public:virtualvoida(){};};classB:publicA{charj[3];public:virtualvoidb(){};};classC:publicvirtualA{chari[3];public:virtualvoidc(){};};classD:publicB,publicC{charh[3];public:virtualvoidd(){};};类大小的输出是:sizeof(A):8sizeof(B):12sizeof(C):16sizeof(D):32我使用的编译器是g

c++ - 我是否应该让一个成员函数成为虚拟的只是为了让一个类可测试?

我正在研究一个简化版本如下所示的类:classHttp_server{public:voidstart(intport){start_server();std::stringcontent_type=extract_content_type(get_request());}private:voidstart_server(){...}std::stringget_request(){...}std::stringextract_content_type(conststd::string&request)const{...}};现在我想为extract_content_type编写一个测

C++ 开关与成员函数指针与虚拟继承

我正在尝试分析实现多态性的各种方法之间的权衡。我需要一个在成员函数上有一些相似之处和一些不同之处的对象列表。我看到的选项如下:在每个对象中都有一个标志,在每个函数中都有一个switch语句。标志的值将每个对象指向其特定的部分每个功能。在对象中有一个成员函数指针数组,它们是施工时分配。然后,我调用该函数指针获取正确的成员函数。有一个带有几个派生类的虚拟基类。一这样做的缺点是我的列表现在必须包含指针,而不是对象本身。我的理解是,从选项3中的列表中查找指针将比选项2中的成员函数查找花费更长的时间,因为保证了成员函数的接近度。这些选项有哪些优点/缺点?我的首要任务是性能而不是可读性。多态还有其

c++ - 未找到先前编译的可用 IPDB/IOBJ

项目结构如下。(VisualStudio2015社区)一个静态库项目一个控制台应用程序项目静态库是使用默认设置创建的,并链接到控制台应用程序项目。程序运行良好。但在与静态库链接的控制台应用程序的发布版本中,会显示以下信息。All205functionswerecompiledbecausenousableIPDB/IOBJfrompreviouscompilationwasfound.Finishedgeneratingcode==========RebuildAll:1succeeded,0failed,0skipped==========使用默认选项生成release静态库有什么问