草庐IT

Pre_delete

全部标签

c++ - 可以在分配有新位置的指针上调用 delete 吗?

我们可以在分配给placementnew的指针上调用delete吗?如果没有那么为什么?请详细说明。我知道没有展示位置删除。但是我想知道为什么只删除opetator不能删除内存而不关心指针指向的内存是如何分配的?delete做两件事:调用析构函数释放内存而且我认为delete没有理由不能对通过placementnew创建的对象调用这两个操作中的任何一个。知道原因吗? 最佳答案 您只能对使用operatornew创建的指针调用delete。如果您将放置new与由普通operatornew分配的内存位置一起使用,那么您可以安全地对其使用

c++ - 当我们有 new/delete 时,为什么要使用 malloc/free?

当我们在C++中有new和delete时,malloc和free有什么用。我想free和delete的功能是一样的。 最佳答案 它们不一样。new调用构造函数,malloc只是分配内存。此外,它是未定义的行为将两者混合(即使用new与free和malloc与删除).在C++中,你应该使用new和delete,malloc和free是为了与C的兼容性原因。 关于c++-当我们有new/delete时,为什么要使用malloc/free?,我们在StackOverflow上找到一个类似的问题

c++ - 作用域枚举的最佳替代方案 - Pre C++11

我想在我的代码中的几个地方开始使用枚举,但我对编译器之前的声明有疑问。目前枚举的声明方式对我来说最有意义:避免这种情况的最佳方法是什么?enumscore_methods_t{NONE,ABS_FROM_PERFECT,ERROR_SQUARED};enumscale_methods_t{NONE,CASES_MULTIPLIER,RANGE_MULTIPLIER};我应该让所有东西都独一无二,还是让命名空间成为范围?我想在类中使用枚举类型,NONE是最具描述性的名称!枚举冲突的另一个原因是因为本质上它们只是引擎盖下的#defines?? 最佳答案

document.execcommand-关闭< pre>堵塞

我尝试创建一个通过使用document.execCommand('insertHTML',false,'‌‌');但是我的问题是我找不到如何正确关闭它。在这一点上,我只找到了一个部分解决方案,该解决方案让两个不需要的空线街区和一个外面。html:OPENPREBLOCKCLOSEPREBLOCKThisisheadingLoremipsumdolorsitamet,consectetueradipiscingelit.Sedposuereinterdumsem.Quisqueligulaerosullamcorperquis,laciniaquisfacilisisseds

c++ - 在指向同一对象的两个指针上调用 delete

我在尝试编写几个事件处理程序类时遇到了问题。基本上,想法是为每个逻辑对象组创建一个事件处理程序类。在大多数情况下,事件发生在对象及其处理程序之间,但在某些情况下,事件也在处理程序对象之间发送。我编写的代码将事件放置在堆栈上(堆栈,就像在用户创建的结构中;事件本身使用new分配)和删除d在他们的信息被阅读并采取行动之后。这给我带来了一些问题,因为在一种情况下,事件是沿着三个处理程序的链发送的。例如,HandlerA发送一个newEvent给HandlerB,后者将它放在堆栈上并读取它,然后将它发送给HandlerC,它读取它并执行它需要执行的任何操作,之后它删除事件指针并将其设置为NUL

c++ - 为什么我不能用 `= delete;` 声明一个纯虚函数?

简介纯虚函数使用通用语法声明:virtualf()=0;然而,自c++11以来,有一种方法可以传达(特殊)成员函数的显式不存在:Mystruct()=delete;//egdefaultconstructor问为什么不将此语法扩展到纯虚函数以实现通信此类操作的统一性?:virtualf()=delete;注意事项我知道显而易见的答案是因为标准是这么说的!。我想知道这背后的原因,以及是否有过这样的提议(或意图)。 最佳答案 粗略地说,区别在于:virtualvoidf()=0;说“这个类是抽象的,我可能没有编写这个成员函数的实现”(尽

c++ - xcode - "attempt to use a deleted function"- 这是什么意思?

我正在Xcode4.2中编写C++库。我的一个类无法编译并出现此错误:attempttouseadeletedfunction没有具体说明它在谈论什么功能。我不想在这里发布类代码,但是有人知道这个错误是什么意思吗? 最佳答案 我对线程(C++11)有类似的消息。结果是我向线程调用的函数传递了错误数量的参数,因此线程找不到任何合适的函数并给出了该消息。 关于c++-xcode-"attempttouseadeletedfunction"-这是什么意思?,我们在StackOverflow上找

c++ - delete[] 提供了修改后的 new-ed 指针。未定义的行为?

我在同行代码审查session期间看到了如下代码:char*s=newchar[3];*s++='a';*s++='b';*s++='\0';delete[]s;//thismayormaynotcrashonsomeoranyday!!首先,我知道在标准C++中,指向数组大小的后一位是可以的。尽管访问它会导致未定义的行为。所以我相信最后一行*s++='\0'没问题。但如果我没记错的话,C++标准要求delete应该提供与new返回的指针相同的指针。我相信这意味着返回的指针不能被篡改。我猜这是因为new可能会在delete可能使用的返回地址之前保留一些内务管理信息。移动new的指针可能

c++ - 为什么 C++ 仍然有 delete[] 和 delete 运算符?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。删除数组只用一个关键字很难吗?效率低吗?

c++ - C++中的delete如何知道要删除多少个内存位置

删除运算符是如何工作的?它比free()更好吗?此外,如果您执行ptr=newchar[10],然后使用deleteptr删除,指针如何知道要删除多少个位置。 最佳答案 只有delete操作符,free只作为函数存在。在C++下,我们鼓励您使用new/delete而不是malloc()/free()。删除运算符有一个内部的“魔法”。当使用new[]创建数组时,数组的大小存储在内存块的元数据中。delete[]使用该信息。所有这些当然都依赖于编译器、操作系统、优化器和实现。 关于c++-C