C++ 中非指针数组的删除

Fab*_*ger 3 c++ arrays delete-operator

当我有一个像这样的数组时:

int* test = new int[50];
for (int i = 0; i < 50; i++)
{
    test[i] = dist4(rng);
}
Run Code Online (Sandbox Code Playgroud)

(填充随机数用于测试)

我可以这样释放内存:

delete[] test;
Run Code Online (Sandbox Code Playgroud)

但是当我像这样声明数组时:

int test[50];
for (int i = 0; i < 50; i++)
{
    test[i] = dist4(rng);
}
Run Code Online (Sandbox Code Playgroud)

我无法使用delete或delete[]释放内存。

这里释放内存的正确方法是什么?

“dist4”函数只是一个随机数生成器:

random_device dev;
mt19937 rng(dev());
uniform_int_distribution<mt19937::result_type> dist4(1,4); // distribution in range [1, 4]
Run Code Online (Sandbox Code Playgroud)

use*_*570 5

这里释放内存的正确方法是什么?

在后一种情况下,无需使用delete或显式释放内存。delete[]

假设int test[50];在函数内部声明,它具有自动存储期限,当test超出范围时,它将自动销毁。