C++について最近勉強を始めたごくごく初心者です。
今ひとつポインタについて理解することができません。
そこで、動的オブジェクトの割り当てとその開放について質問させてください。

int *t;
t = new int;*t=1;
t = new int;*t=2;
t = new int;*t=3;

上記のようにして動的オブジェクトを3回割り当てた場合、
ポインタtは一番最後のアドレス(値3が格納されたメモリ)のみ記憶しています。
この状態で、
質問1:
値1や値2の格納されたメモリエリアに簡単にアクセスする方法はありますか?
(言い換えれば、値1や値2のポインタを取得する方法はありますか?)
質問2:
delete t;では値3の格納されたエリアしか開放できません。
値1や値2の格納されたメモリを開放する簡単な方法はありますか?
質問3:
ポインタを使ったポピュラーなデータ構造として「リンクリスト」がありますが、
このデータ構造は上記のプログラムと本質的に同じ部分があると思われます。
つまり、リストの各要素を格納しているメモリエリアに固有の識別名が与えられていません。
(例えば、配列なら、a[0],a[1],a[2]・・・のように、それぞれのメモリエリアの識別ができます)
リストのn番目の要素のポインタや値を簡単に取得する方法はありますか?
また、リスト全体を簡単にdeleteする方法はありますか?

これらの質問の真意は、
確保したメモリについてプログラマはどこまで責任を持たなければならないのか?ということです。
質問2が不可能だとすると、このようなプログラムは「書いても文法上エラーにはならない」が、
やがてはメモリ不足でエラーを起こす「書いてはいけない」プログラムだということになりますよね?
よろしくお願いします。m(__)m