從我所瞭解到的情況來看,動態分配的變量需要使用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,上述程序沒有提供任何錯誤。根據我的理解,這沒有任何意義。
我假設我的理解動態分配的變量有問題。任何人都可以澄清?