草庐IT

c++ - 具有指针结构的类是否需要析构函数

我有一个类,它有一个结构,其中一个成员是指针。structgroup{void*v1,void*v2;};classA{A(group&handle):m_handle(handle)private:groupm_handle;};类A中没有指针成员。当A中没有定义析构函数时,我没有看到任何问题(例如内存泄漏)。我了解到,当对象A超出范围时,会调用A的析构函数如果A中存在成员类,则调用它们的析构函数,依此类推。那么,像上面的m_handle这样的成员结构会发生什么-它们是否具有类似于析构函数的任何东西,以及当对象A超出范围时如何删除结构组中的两个空指针? 最

c++ - 如何在C++中获取进程的句柄类型

我正在编写代码,尝试收集有关系统进程性能的信息。我有一些计数器,例如%Cpu,RAM等,但是我无法获取有关句柄的信息(如ProcessExplorer那样)。要获取进程的句柄计数,我们可以使用GetProcessHandleCount(),但我需要“一些东西”来告诉计算机中使用的句柄的全局计数以及这些句柄的类型(文件,键,事件,目录等)有人知道是否有一些功能可以获取该信息吗?谢谢! 最佳答案 您将需要使用本机系统API函数NtQuerySystemInformation/NtQueryObject并绕过Win32API来执行此操作。

c++ - 在 C++ 中处理类?

在C++primer15.8中,当作者谈到'handleclassandinheritance'时,他说:AcommontechniqueinC++istodefineaso-calledcoverorhandleclass.Thehandleclassstoresandmanagesapointertothebaseclass.Thetypeoftheobjecttowhichthatpointerpointswillvary;itcanpointateitherabase-oraderived-typeobject.Usersaccesstheoperationsoftheinhe

c++ - Matlab/C++ : segmentation fault on parallel computing with C++ Mex persistent objects (cannot convert handle)

本帖引用:[1]http://www.mathworks.com/matlabcentral/newsreader/view_thread/278243“使C++对象在mex调用之间持久化,并且健壮。”[2]MATLABparforandC++classmexwrappers(copyconstructorrequired?)“MATLABparfor和C++类mex包装器(需要复制构造函数?)”我成功地实现了一个Matlab/C++接口(interface),基于[1]上提出的方法。无论如何,我在尝试将系统与Matlab并行计算一起使用时遇到了麻烦。在MEX接口(interface)

javascript - 当我在 C++ 附加组件中创建 ArrayBuffer 时,node-webkit 崩溃

我正在编写一个node-webkitc++附加组件,每次我尝试创建ArrayBuffer时它都会崩溃。以下代码是一个最小的崩溃示例。#include#include#includeusingnamespacev8;HandlecreateVector(constArguments&args){HandleScopescope;Handlea=ArrayBuffer::New(12);returnscope.Close(a);}voidinit(Handleexports){exports->Set(String::NewSymbol("createVector"),FunctionTe

java - JNI : How to handle the creation/removal of wrapped C++ object

我想包装一个C++对象,以便我可以从Java访问它。通过阅读jniandusingc++new'edobjectsinjava,我了解了如何在我的Java包装器类中保存对我的C++对象的引用。.不过,我还没有弄清楚的一件事是如何处理我的C++对象的创建和删除。当然,我可以引入创建和删除我的C++对象的native方法,但这意味着我必须在Java中自己处理内存管理……不是很Javaish。在我的Java包装器对象创建和垃圾收集时,是否有任何我应该实现的本地方法被调用? 最佳答案 您必须编写native方法来创建和销毁您的C++对象。关

C++/QML : How to define and handle multiple contexts for dynamically created components?

基本上我的情况是这样的:我有一个扩展QQuickView的类,它通过设置上下文属性将某些对象从C++公开到QML。显示的View是从QML创建的,并且都是同一定制组件的不同实例;当某些事件发生时会创建新View,当这种情况发生时,现有View应显示最初在C++端分配给它们的对象,而新View应显示分配给它们的对象。所以,在C++方面,我有这样的东西:WindowManager::WindowManager(QQuickView*parent):QQuickView(parent){//Settingthesourcefiletousethis->setSource(QUrl("qrc:

c++ - 如何在不在 C++ 中创建函数对象的情况下将函数指针作为模板值参数传递?

我在这里看到过这个问题的许多变体,但我仍然觉得我的具体情况有所不同。我的目标是包装一个如下所示的CAPI:TF_Buffer*buf=TF_AllocateBuffer();//...TF_DeleteBuffer(buf);因为我有很多这样的对象,所以我想创建一个名为handle的通用类型,它可以保存给定的指针并在销毁时调用适当的释放器。我想象的用例是classbuffer:publichandle{public:buffer(TF_Buffer*b):handle(b){}}不幸的是,我无法让它工作,因为TF_DeleteBuffer是一个简单的函数(类型为voidTF_Delet

c++ - 如何在 C++11 中返回包含自定义删除器的 std::unique_ptr?

我的应用程序编译器最多只能支持c++11。下面是我的项目和函数get_conn()的片段代码返回std::unique_ptr和自定义删除器(删除器需要两个参数)。我正在使用auto关键字作为返回类型,但它给出了一个错误,就像ifiscompiledwithc++11(compilesfinewithc++14)error:‘get_conn’functionuses‘auto’typespecifierwithouttrailingreturntype演示示例代码:#include#include#includeusingnamespacestd;//Dummydefinitiono

c++ - 为什么 shared_ptr<void> 而不是 shared_ptr<HANDLE>

基于http://en.highscore.de/cpp/boost/smartpointers.html#smartpointers_shared_pointer#include#includeintmain(){boost::shared_ptrh(OpenProcess(PROCESS_SET_INFORMATION,FALSE,GetCurrentProcessId()),CloseHandle);SetPriorityClass(h.get(),HIGH_PRIORITY_CLASS);}问题:为什么h定义为boost::shared_ptr而不是boost::shared_