草庐IT

Share-Delete

全部标签

c++ - delete x 和 delete(x) 有什么区别吗?

在C++中,以下命令有什么区别吗:deletex;delete(x); 最佳答案 不,绝对没有区别。 关于c++-deletex和delete(x)有什么区别吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/29043061/

c++ - delete [] char *,内存问题

我有一个全局指针变量char*pointer=newchar[500];/*someoperations...*/有一个单独的FreeGlobal()函数可以释放指针,如下所示:delete[]pointer;第一次调用函数时,它实际上释放了内存,现在指针是一个坏指针。但是当我们多次调用它时,它会抛出异常。有没有办法在再次调用delete[]之前检查指针变量?解决方法是什么?这是一种不好的做法吗?谢谢。 最佳答案 删除后将指针设置为空。您不应多次尝试删除相同的数据。正如GRB在这篇文章的评论中提到的,调用delete[]NULL是绝

c++ - 由于 delete 运算符释放内存,为什么我需要一个析构函数?

来自C++常见问题解答:http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.9Remember:deletepdoestwothings:itcallsthedestructoranditdeallocatesthememory.如果delete释放内存,那么这里的析构函数有什么用? 最佳答案 Ifdeletedeallocatesthememory,thenwhat'stheneedofthedestructorhere?析构函数的要点是执行清理对象后所需的任何逻辑,例如

c++ - 调用 free() 或 delete 而不是 delete[] 有什么危险吗?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicate:(POD)freeingmemory:isdelete[]equaltodelete?delete是否释放数组中第一个元素之后的元素?char*s=newchar[n];deletes;在上面的例子中,s的所有元素都是连续分配的,这有什么关系,而且不应该只delete数组的一部分?对于更复杂的类型,delete会调用第一个对象以外的对象的析构函数吗?Object*p=newObject[n];deletep;delete[]如何推断第一个之外的Object的数量,这是否意味着它必须知道分配的内存区域的大小?如

c++ - 既然 delete [] 知道数组大小,为什么这个信息不可用?

当我在C++(T*p=newT[n])中分配一个动态数组时,我使用delete[]p来释放分配的内存。显然,系统知道数组大小(以便调用n次T的析构函数)。这在别处讨论。例如Howdoesdelete[]“know”thesizeoftheoperandarray?.这是实现细节。但为什么没有决定公开这些信息呢?谢谢 最佳答案 delete[]可能不一定知道确切的数组大小。例如,它可能会过度分配,或者做一些完全奇怪但符合标准的事情。开玩笑的答案也可能是没有人能够说服标准委员会相信这个想法的优点;也许sizeof[](p)可能是建议的语

C++ "delete"很慢。我应该先看哪里?

我有一个C++应用程序,其中“删除”功能运行缓慢。什么可能导致这种情况,我应该从哪里开始寻找解决方案?背景:此C++代码位于AutoCAD内部运行的ARX文件中,它基本上只是一个DLL。删除速度较慢的特定计算机正在运行AutoCAD2011、Windows7、64位。AutoCAD2011的ARX必须使用VisualStudio2008ServicePack1进行编译。出现问题的计算机是客户的计算机。它没有安装任何版本的VisualStudio。在我的开发电脑上,代码在AutoCAD2011中没有任何问题。为了测试,我有一些删除链表的代码。在有问题的电脑上,删除列表需要0.7秒。在没有

c++ - throw 或 delete 表达式可以依赖吗?

gcc5.0和clang3.6都需要typename以下示例中的关键字:templatestructB{typedefintType;};templatestructA{typedeftypenameB::TypeThrow;typedeftypenameB::TypeDelete;};C++11标准中的以下措辞涵盖了这一点:[except]/2Athrow-expressionisoftypevoid.[expr.delete]/1Theoperandshallhaveapointertoobjecttype,oraclasstypehavingasinglenon-explicit

c++ - 在 "delete this"之后访问局部变量

我有一个使用引用计数机制的类。当引用计数降为零时,通过调用deletethis最终销毁此类的对象。我的问题是:在deletethis之后我可以使用本地堆栈变量吗?这是一个更具体的例子:classRefCountedClass{public:RefCountedClass(Mutex&m):mutex_(m){}...private:Mutex&mutex_;voidRemoveReference(){//AsIunderstand,mutex_willbedestroyedafterdelete,//butusingmisallrightbecauseitison-stackand//

c++ - 使用可选参数重载 new 和 delete 运算符

#include#include#include#includestructfoo{};inlinevoid*operatornew(size_tsize,foo*)throw(std::bad_alloc){std::cout输出(viaideone):mynew1我的想法是,C++会释放一个带有附加参数的新对象,并匹配删除相同的参数,但我显然是不正确的。让上面的代码调用我的重载删除的正确方法是什么? 最佳答案 当你使用任何形式的placementnew时,除了std::nothrow_t版本,你需要明确地销毁对象并以你认为合适的

C++ 内部代码重用 : compile everything or share the library/dynamic library?

一般问题:对于非托管C++,内部代码共享有什么更好的?通过共享实际源代码来重用代码?或者通过共享库/动态库(+所有头文件)重用代码无论是哪一个:您减少重复代码(复制粘贴综合症)、代码膨胀的策略是什么?具体例子:以下是我们在我的组织中共享代码的方式:我们通过共享实际源代码来重用代码。虽然我们的项目实际上需要跨平台,但我们使用VS2008在Windows上进行开发。我们有许多项目(.vcproj)提交到存储库;有些可能有自己的存储库,有些可能是存储库的一部分。对于每个可交付的解决方案(.sln)(例如,我们交付给客户的东西),它将svn:externals从存储库中获取所有必要的项目(.v