動的に割り当てられた変数は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を使用してもエラーは発生しません。私の理解によれば、これは意味をなさない。
私は動的に割り当てられた変数の理解に何か間違いがあると仮定しています。誰でも明確にしてもらえますか?