C++ 使用新int[10]分配的内存必须通过delete[]解除分配

C++ 使用新int[10]分配的内存必须通过delete[]解除分配,c++,memory,C++,Memory,声明: 使用新int[10]分配的内存必须通过delete[]解除分配 所以 那我怎么删除呢 编辑: 谢谢大家:) 我认为威尔逊、保罗、蒂姆等都是对的,这句话省略了一些单词,因此让我困惑---这很简单 int * p = new int[10]; delete [] p; 不过,我从未见过罗布的回答,对我来说真的很新鲜!如有任何解释,将不胜感激。:) 就像上面说的: int *foo = new int[10]; delete[] foo; 您缺少一个用于保存从new返回的值的变量。您应

声明:

使用新int[10]分配的内存必须通过delete[]解除分配

所以

那我怎么删除呢

编辑: 谢谢大家:) 我认为威尔逊、保罗、蒂姆等都是对的,这句话省略了一些单词,因此让我困惑---这很简单

int * p = new int[10];

delete [] p; 
不过,我从未见过罗布的回答,对我来说真的很新鲜!如有任何解释,将不胜感激。:)

就像上面说的:

int *foo = new int[10];
delete[] foo;

您缺少一个用于保存从new返回的值的变量。您应该有如下内容:

int* intArray = new int[10];
随后,当您要删除内存时,可通过变量引用它:

delete[] intArray;

您无法删除它,因为您没有句柄。若要保持相同的样式,
delete[]new int[10]您应该使用
std::vector
。我不记得上次在代码中写
delete
delete[]
是什么时候了。也许不是完全相同,但值得一提的是:@Robᵩ 那对我来说很有趣!如果我不删除任何内存和程序出口。那会有什么风险吗?(意味着我们只需要在运行时删除内存?)如果我不删除任何内存和程序退出。那会有什么风险吗?有人告诉我,如果我们不释放内存和程序退出,那么在重新安装操作系统之前,内存将无法使用。大多数现代操作系统会在程序退出时清理剩余的内存分配,但无论如何,释放所有动态分配都是一个好主意-这样可以更容易地发现内存泄漏,如果重新设计程序,这可能会变得很重要。你说“清除/清理内存”是什么意思?
int * p = new int[10]; // allocate p

// do stuff with p

delete [] p;           // release p when you're done
int* intArray = new int[10];
delete[] intArray;