草庐IT

delete-orphan

全部标签

c++ - boost::checked_delete 的目的

我不明白boost::checked_delete的目的。文档说:TheC++Standardallows,in5.3.5/5,pointerstoincompleteclasstypestobedeletedwithadelete-expression.Whentheclasshasanon-trivialdestructor,oraclass-specificoperatordelete,thebehaviorisundefined.Somecompilersissueawarningwhenanincompletetypeisdeleted,butunfortunately,no

c++ - 为什么编译器需要 `delete [] p` 而不是 `delete p[]` ?

在C++中,如果你想动态分配一个数组,你可以这样做:int*p;p=newint[i];//iissomenumber但是,要删除数组,您需要...delete[]p;为什么不deletep[]?这与最初的创建方式不是更加对称吗?以这种方式设计语言的原因(如果有的话)是什么? 最佳答案 一个原因可能是使这些案例更加不同。int**p;delete[]pdeletep[1];如果是deletep[],那么一个字符的错误将会产生非常糟糕的后果。 关于c++-为什么编译器需要`delete[]

c++ - 为什么编译器需要 `delete [] p` 而不是 `delete p[]` ?

在C++中,如果你想动态分配一个数组,你可以这样做:int*p;p=newint[i];//iissomenumber但是,要删除数组,您需要...delete[]p;为什么不deletep[]?这与最初的创建方式不是更加对称吗?以这种方式设计语言的原因(如果有的话)是什么? 最佳答案 一个原因可能是使这些案例更加不同。int**p;delete[]pdeletep[1];如果是deletep[],那么一个字符的错误将会产生非常糟糕的后果。 关于c++-为什么编译器需要`delete[]

c++ - "delete this"是个坏主意吗?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Isitsafetodeletethis?我一直在做一些工作,该类旨在充当链表中的节点,我想我应该为该类提供自己的删除功能,而不是由管理类执行。所以基本上是这样的:voidClass::Delete(){//Somecleanupcodebeforedeletingtheobjectdeletethis;}现在我已经对此进行了测试,它似乎工作正常,但我过去遇到过一个问题,即对象一直处于运行代码的中间,被删除,然后显然通过尝试使用不再存在的对象。由于“删除这个”就在函数的末尾,它显然退出了函数并且工作正常,但是

c++ - "delete this"是个坏主意吗?

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Isitsafetodeletethis?我一直在做一些工作,该类旨在充当链表中的节点,我想我应该为该类提供自己的删除功能,而不是由管理类执行。所以基本上是这样的:voidClass::Delete(){//Somecleanupcodebeforedeletingtheobjectdeletethis;}现在我已经对此进行了测试,它似乎工作正常,但我过去遇到过一个问题,即对象一直处于运行代码的中间,被删除,然后显然通过尝试使用不再存在的对象。由于“删除这个”就在函数的末尾,它显然退出了函数并且工作正常,但是

c++ - 在 C++ 中,指针是否保证在 `delete` 之后保留其值?

灵感来自thisquestion.假设在C++代码中我有一个有效的指针并正确地delete它。根据C++标准,指针将变为无效(3.7.3.2/4-释放函数将使引用所有已释放存储部分的指针无效)。至少在大多数实现中,它会保留值并存储与delete之前完全相同的地址,但是usingthevalueisundefinedbehavior.标准是否保证指针将保留其值,或者该值是否允许更改? 最佳答案 不,不能保证,实现可以合法地将零分配给delete的lvalue操作数。BjarneStroustrup曾希望实现会选择这样做,但没有多少人这

c++ - 在 C++ 中,指针是否保证在 `delete` 之后保留其值?

灵感来自thisquestion.假设在C++代码中我有一个有效的指针并正确地delete它。根据C++标准,指针将变为无效(3.7.3.2/4-释放函数将使引用所有已释放存储部分的指针无效)。至少在大多数实现中,它会保留值并存储与delete之前完全相同的地址,但是usingthevalueisundefinedbehavior.标准是否保证指针将保留其值,或者该值是否允许更改? 最佳答案 不,不能保证,实现可以合法地将零分配给delete的lvalue操作数。BjarneStroustrup曾希望实现会选择这样做,但没有多少人这

c++ - Qt: "new without delete"是否会导致控件的内存泄漏?

我正在查看Qt示例here:在构造函数内部,它们有:Window::Window(){editor=newQTextEdit();//Memoryleak?QPushButton*sendButton=newQPushButton(tr("&Sendmessage"));//Memoryleak?connect(sendButton,SIGNAL(clicked()),this,SLOT(sendMessage()));QHBoxLayout*buttonLayout=newQHBoxLayout();//Memoryleak?buttonLayout->addStretch();bu

c++ - Qt: "new without delete"是否会导致控件的内存泄漏?

我正在查看Qt示例here:在构造函数内部,它们有:Window::Window(){editor=newQTextEdit();//Memoryleak?QPushButton*sendButton=newQPushButton(tr("&Sendmessage"));//Memoryleak?connect(sendButton,SIGNAL(clicked()),this,SLOT(sendMessage()));QHBoxLayout*buttonLayout=newQHBoxLayout();//Memoryleak?buttonLayout->addStretch();bu

PUT/DELETE 为何成了 HTTP 协议中的不安全方法

要求:禁止使用不安全的HTTP方法,例如PUT、DELETE等。缘由1:TomcatPUT的上传漏洞,受影响的版本:Apache Tomcat7.0.0to7.0.79当Tomcat运行在Windows操作系统时,且启用了HTTPPUT请求方法(例如,将readonly初始化参数由默认值设置为false),攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的JSP文件,JSP文件中的恶意代码将能被服务器执行。导致服务器上的数据泄露或获取服务器权限。利用条件:ApacheTomcat默认开启PUT方法,org.apache.catalina.servlets.DefaultSe