2

在我所在的课程中,重构析构函数并不能破坏其数组。

    class MyClass{
    public:
        double a;
        double rect[4];

        MyClass();
        ~MyClass();
    };

    MyClass::MyClass() : a(123.0)
    {
        memset(rect, 0, 4 * sizeof(double));
    }

    MyClass::~MyClass() {}

如何正确销毁它?是否足够简单delete或者我还需要在之后设置以下内容?

delete[] rect;
*rect= NULL;
4

3 回答 3

15

作为一般经验法则,您需要删除新编辑的内容。该rect数组与封闭对象具有相同的存储空间,因此在删除/离开分配整个对象的范围的过程中会注意它。

于 2013-08-20T13:21:53.227 回答
2

您无需执行任何操作,因为它是在自动存储而不是动态内存上分配的。只是一般规则:

  1. 如果你曾经new分配内存,你需要使用delete.

  2. 如果您使用过malloc(), calloc()realloc()那么您可以使用free(). (总是尝试在 C++ 中使用 new 和 delete。)

于 2013-08-20T13:31:53.553 回答
1

你不必破坏它,因为它不是你自己创造的。由于您没有通过malloc()or获得它的记忆new,因此您不必使用free()ordelete它。这是一个自动标识符。它只是在自动记忆中。这意味着无论如何它都会被进程本身释放/删除。

于 2013-08-20T13:23:01.403 回答