草庐IT

checked_delete

全部标签

c++ - 为什么在 delete (delete[]) 中使用 [] 来释放动态分配的数组?

我知道当delete[]将破坏所有数组元素,然后释放内存。我最初认为编译器只希望它为数组中的所有元素调用析构函数,但我也有一个相反的论点:堆内存分配器必须知道分配和使用的字节大小sizeof(Type)可以找到noof元素并为数组调用适当的noof析构函数以防止资源泄漏。所以我的假设是否正确,请消除我的疑虑。所以我没有得到[]的用法在delete[]? 最佳答案 ScottMeyers在他的EffectiveC++书中说:第5条:在相应的new和delete用法中使用相同的形式。Thebigquestionfordeleteisth

c++ - 有没有办法调用纯虚类的 "deleting destructor"?

我在UbuntuTrusty上使用C++11和g++4.8。考虑这个片段classParent{public:virtual~Parent()=default;virtualvoidf()=0;};classChild:publicParent{public:voidf(){}};使用调用{Childo;o.f();}{Parent*o=newChild;deleteo;}{Child*o=newChild;deleteo;}我使用gcov生成我的代码覆盖率报告。它报告从未调用带有符号_ZN6ParentD0Ev的析构函数,而_ZN6ParentD2Ev是。回答Dualemission

c++ - new 后面一定要跟着 delete 吗?

这个问题在这里已经有了答案:关闭13年前。我想我们都明白在重新分配动态分配的指针以防止内存泄漏时delete的必要性。但是,我很好奇,C++在多大程度上强制使用delete?比如下面这个程序intmain(){int*arr=newint[5];return0;}虽然出于所有意图和目的,此处不会发生泄漏(因为您的程序正在结束,操作系统将在返回后清理所有内存),但标准是否仍然需要——或推荐——使用delete[]在这种情况下?如果不是,是否还有任何其他原因导致您在此处删除[]?

c++ - 为什么 delete 可以在指向 const 的指针上执行而 free 不能?

我刚刚注意到传递给delete的指针可以是const限定的,而传递给free的指针则不能。这对我来说真是个惊喜。在C++中,operatordelete的重载应该有如下签名:voidoperatordelete(void*p);但是给参数指针加一个const是无效的:voidoperatordelete(voidconst*p);谁能告诉我为什么delete是这样设计的? 最佳答案 free不应与实际的C++对象一起使用。free应与malloc一起使用,因此您不应在使用new分配的内容上使用free。至于为什么可以deleteco

windows - Remove-Item 不起作用,Delete 起作用

有谁知道为什么Remove-Item会失败而Delete有效?在下面的脚本中,我得到了我想要删除的文件列表。使用Remove-Item我收到以下错误消息:VERBOSE:Performingtheoperation"RemoveFile"ontarget"\\UncPath\Folder\test.rtf".Remove-Item:Cannotremoveitem\\UncPath\Folder\test.rtf:Accesstothepathisdenied.但使用Delete会在我们说话时删除这些文件。脚本$files=gci\\UncPath\Folder|?{$_.LastWr

C#/WMI : How to remotely check if Windows has updates ready to be installed?

我尝试在谷歌上找到解决方案,但运气不佳,也许这里有人知道该怎么做? 最佳答案 不确定您是否可以远程执行此操作,但您可以“伪造”它。查看WindowsUpdateAgentAPI的MSDN文档,特别是名为Searching,Downloading,andInstallingUpdates的文章.其中包含一个脚本,其中列出了准备安装的更新。如果你拿走那部分脚本并将其修改为将列表写入文件,那么你可以将脚本复制到远程计算机,远程执行脚本,然后读取文件(最后删除文件和脚本从远程计算机进行清理)。您可以使用WMI远程执行脚本,有关从C#执行此操

windows - VBS : Check IP address and open URL (but only once)

我正在尝试创建一个VBScript,它将通过检查其IPv4地址(由DHCP分配)来检测正在运行的计算机是否连接到我们工作的LAN,然后根据它是否打开特定的URL在我们的网络内部或外部。该脚本将主要用于在工作(10.12.90.0/22)和家庭(通常是192.168/23,但这实际上可以是任何东西)之间漫游的笔记本电脑上。在这两种情况下,我只需要打开corectURL一次,因为几乎总是会有多个网络适配器(有线/无线/蓝牙等)。下面的脚本在我测试时似乎可以工作,但我不是程序员,我不确定是否有更好的方法来做到这一点。理想情况下,我希望避免因延迟而对服务器执行ping操作。strCompute

c# - Windows 10 UWP - C# : How to check network type (EDGE/3G/LTE), 不仅是蜂窝还是 WLAN?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion如何检查当前使用的是哪种蜂窝网络连接(EDGE/3G/LTE)?我只知道如何检查设备是在蜂窝连接还是WLAN上,但我需要特定类型的蜂窝连接。谢谢!

windows - 如何在命令行上从 SVN check out 已删除的项目

我正在尝试checkout一个在修订版401中从我的SVN中删除的项目。该项目现在已不复存在,并且已被代码重写完全取代,但我想checkout以便我在进行重写时可以引用旧代码的小片段。据我所知,这应该很简单,只需检查旧路径和最后一个正确的修订版(400)。但是当我尝试这个时,我得到了一个错误,因为它正在尝试使用最新的修订版:C:\Users\couling\workspace>svncheckout--revision=400https://svn.domain.com/repos/trunk/OldProjectErrorvalidatingservercertificatefor'

windows - git 克隆卡在 "checking connectivity"

操作系统-Windows7专业版64位Windows版GIT-Git-1.9.0-使用Gitbash我突然莫名其妙地开始遇到“gitfetch”的问题。有时git.exe会出错,有时“gitfetch”会挂起。所以我决定一切从头开始。我卸载了gitforwindows并重新安装它(接受所有默认设置),重新启动机器。创建一个全新的文件夹并执行以下操作$gitclonegit@github.com:myid@example.com/myproject.gitCloninginto'myproject'...Enterpassphraseforkey'/c/Users/myid/.ssh/i