C++ 使用新int[10]分配的内存必须通过delete[]解除分配
声明: 使用新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 * 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;