delete-operator

    0热度

    1回答

    我正在进行这个单元测试。我想删除钻头和电池,但似乎不起作用(也许电池不能被删除)。我可以在析构函数上做任何事情来处理这个问题吗? void test_rover::testDisconnectBattery() { Drill* drill = new Drill(); drill->connectBattery(new Battery(10)); drill-

    1热度

    4回答

    我尝试在Linux64上运行/编译OpenTibia服务器。小小的调整,编译和一切似乎很好。然而,Valgrind的说: ==32360== Invalid free()/delete/delete[]/realloc() ==32360== at 0x4C2BDEC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)

    0热度

    2回答

    我真的很难理解指针,所以请原谅我这个问题可能有任何含糊之处。是的,我提出了不止一个问题,但标题中的问题是迄今为止最重要的问题。其他问题只是我非常感谢你回答的问题。因此,可以说我有一个类,它看起来是这样的: class myclass { public: myclass(); ~myclass(); private: struct node {

    0热度

    1回答

    我想在对象局部性较低时测试C++性能,因此我试图分配大量的具有许多“死对象”的内存。当他们之间有很多“死亡的人”时,我会以“活的物体”为基准。 为此我定义了一个简单的LinkedList: #include "LinkedList.hpp" #include <iostream> #include <string> LinkedList::LinkedList() { this-

    0热度

    1回答

    我有一个相当大的挑战(也许只是为了我)。 我有几个继承自某些基类A的类。 所有这些类都应该重载new和delete运算符。 现在,我在类A中重载了new/delete以返回错误消息,但我希望能够在编译时识别这些情况,而不是在运行时识别这些情况,因为有很多继承类,并且很难跟踪他们。 任何想法如何强制从类A继承的类重载新/删除操作符?或任何其他解决方案? 谢谢。

    2热度

    2回答

    我正在学习C/C++,我正在做的练习是创建一个评估算术表达式的程序。 要完成练习,我需要一个通用函数,它能够标记一个字符串。 由于编译时不知道要解析的字符串的大小,因此我必须动态地分配堆中的一些数据。 工作完成后,可以释放堆中的内存。 我的问题很简单:我正确释放内存?查看评论中的问题。 记号化功能 char** Tokenize(const char delimiter, const char*

    -1热度

    2回答

    当我尝试初始化构造函数时,发现了一些奇怪的错误。如果我只是展示他们,这是最简单的。 #include <iostream> class MyClass { public: int var1, var2, var3; MyClass() { var1, var2, var3 = 0; } MyClass(int one, int

    4热度

    1回答

    的几个问题已经被问过的计算器这个问题,但我还没有看到任何解释理由 delete表达式的限制落后。 为了澄清这个问题,我试图收集事实,因为我已经在接下来的三个评论中理解了这些事实。 备注1:一般新的表达 让我们考虑任何“运营商新的”(不管它是默认的全球性的,它覆盖默认的全局之一,重载版本或类成员一个版本版)。我们假设我们也有一个匹配的“操作员删除”。 假设原型如下: void* operator n

    0热度

    1回答

    我正在做我的功课。目标是实现大操作类(BigInt)。 初始化:BigInt类的每个对象都被构造为一个动态数组。数组的成员是由用户输入的字符串的数字(以相反顺序 - 这对我来说更容易实现操作)。 类BigInt的规格: 两个BigInts之间的关系(更小,更大,相等), 操作:加,减,乘。 关系,加法和减法运作良好。问题在于乘法。 问题:当我测试没有乘法的程序时,它运行良好。当我取消注释乘法时,在

    -1热度

    2回答

    我在一次采访中被问到: “在C++的内存管理方面,说明这段代码有什么问题?” int main(){ for(int i = 0; i<10; i++){ Foo foo = new Foo(); delete foo; } } class Foo{ foo(){ string x = new string;