如果不删除动态创建的变量,会发生什么? 我是C++初学者,我想知道如果我不删除内存会发生什么事。 使用new operator分配。为什么这被认为是一种不好的做法?我听说即使我不释放动态分配的内存,操作系统迟早会释放它。这种做法会使应用程序崩溃或导致任何错误或错误 它只是让人泄气 #include <iostream> using namespace std; int main() { int* arr = new int[10]; arr = new int[5];//initializing again with new } #包括 使用名称空间std; int main() { int*arr=新的int[10]; arr=new int[5];//用new重新初始化 }

如果不删除动态创建的变量,会发生什么? 我是C++初学者,我想知道如果我不删除内存会发生什么事。 使用new operator分配。为什么这被认为是一种不好的做法?我听说即使我不释放动态分配的内存,操作系统迟早会释放它。这种做法会使应用程序崩溃或导致任何错误或错误 它只是让人泄气 #include <iostream> using namespace std; int main() { int* arr = new int[10]; arr = new int[5];//initializing again with new } #包括 使用名称空间std; int main() { int*arr=新的int[10]; arr=new int[5];//用new重新初始化 },c++,new-operator,C++,New Operator,这肯定是内存泄漏,是一种非常糟糕的做法 首先,您不想占用系统资源,比如内存,放弃它但不释放它 其次,您的代码可以工作,因为您只创建了10个整数的内存泄漏。如果它是一个商业应用程序,并且这个bug存在于代码或代码的许多部分中,并且被反复执行,那么它可能会导致严重的不确定性崩溃 您可以通过将代码包装成大循环(如10k迭代)来模拟这一点。在不删除内存的情况下尝试,然后再删除它。你会看到区别。当内存耗尽时,不删除的代码会在某个点崩溃。1)这样的代码会造成内存泄漏,因为没有任何东西会释放由new int[

这肯定是内存泄漏,是一种非常糟糕的做法

首先,您不想占用系统资源,比如内存,放弃它但不释放它

其次,您的代码可以工作,因为您只创建了10个整数的内存泄漏。如果它是一个商业应用程序,并且这个bug存在于代码或代码的许多部分中,并且被反复执行,那么它可能会导致严重的不确定性崩溃


您可以通过将代码包装成大循环(如10k迭代)来模拟这一点。在不删除内存的情况下尝试,然后再删除它。你会看到区别。当内存耗尽时,不删除的代码会在某个点崩溃。

1)这样的代码会造成内存泄漏,因为没有任何东西会释放由
new int[10]
分配的内存。2) “再次初始化”不能初始化两次
arr=new int[5]
是一个赋值。这样做会泄漏内存。这不是一个“坏习惯”的问题,而是一个不允许的问题。你只能初始化一次变量。除了特殊情况外,是/否问题几乎永远不适合StackOverflow,因为你会得到下面的答案:简单的是或否。你想知道为什么这是坏习惯,你应该删除数组吗?你有什么理由怀疑这不是个好主意吗?这些细节可以使这成为一个更有趣、更好的问题<代码>整数*arr=新整数[10]是初始化<代码>arr=新整数[5]是一项任务。或者,如果您是某些大公司,不想修复该漏洞,您只需每隔几个小时重新启动一次流程,就可以绕过漏洞。:-)