相关疑难解决方法(0)

C++指针数组:删除或删除[]?

Cosider以下代码:

class Foo
{
    Monster* monsters[6];

    Foo()
    {
        for (int i = 0; i < 6; i++)
        {
            monsters[i] = new Monster();
        }
    }

    virtual ~Foo();
}
Run Code Online (Sandbox Code Playgroud)

什么是正确的析构函数?

这个:

Foo::~Foo()
{
    delete [] monsters;
}
Run Code Online (Sandbox Code Playgroud)

或这个:

Foo::~Foo()
{
    for (int i = 0; i < 6; i++)
    {
        delete monsters[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前有最重要的构造函数,一切都在工作,但当然我看不出它是否恰好泄漏...

就个人而言,我认为考虑到我在做什么,第二个版本更合乎逻辑.无论如何,这样做的"正确"方法是什么?

c++ arrays pointers delete-operator

41
推荐指数
5
解决办法
9万
查看次数

int*array = new int [n]; 这个功能究竟在做什么?

我对如何创建动态定义的数组感到困惑:

 int *array = new int[n];
Run Code Online (Sandbox Code Playgroud)

我不知道这是做什么的.我可以告诉它创建一个指向数组的指针指向一个新的对象/数组int?有人会关心解释吗?

c++ arrays pointers new-operator

18
推荐指数
3
解决办法
9万
查看次数

标签 统计

arrays ×2

c++ ×2

pointers ×2

delete-operator ×1

new-operator ×1