从我所了解到的情况来看,动态分配的变量需要使用delete操作符来删除,并且不会在范围末尾自动删除,例如静态变量。C++ - 动态分配变量的范围
因此,在以下示例中,当循环运行第2次和第3次时,不应该为“int * p = new int;”由于动态分配的内存'p'没有被删除,因此被多次初始化?
#include<iostream>
using namespace std;
void main()
{
int i = 2;
while (i > -1)
{
int *p=new int;
*p = 5;
cout << *p;
--i;
}
}
使用Visual Studio 2015,上述程序没有提供任何错误。根据我的理解,这没有任何意义。
我假设我的理解动态分配的变量有问题。任何人都可以澄清?