質問
いる配列へのポインタのポインタ.を削除するかのようになります:
delete [] PointerToPointers;
まるべて削除するのがポイントでも見ることができますか?ないと、ループすべてのポインタを削除して、そして簡便にしていきますか?私のgoogle-fuなく、良いることがうかがえます。
(うん、はいを利用する必要がありベクトルとなっています。この"形態に合わせてC++の"タイプの課題に学校に通えるようになった。)
解決
ありましてループのポインタースト、削除ます。
理由:どの場合その他のコードがポインタのオブジェクト配列?のC++コンパイラを知らない場合はそうではないでいきます
のための"や、"二つの提案:(1)作互にこの目的のためなので少なくともいて、コードを書くります。(2)利用のスマートポインタを"デザインのパラダイムが保持するオブジェクトの配列を参照-カウンター、そのオブジェを除いたが、物がなくなりによって参照される任意のコードです。
他のヒント
いJason Cohenすることができますが、味がより明確に理由が必要なのか、削除のポインタのループを実行します。毎回"新しい"または動的にメモリ割り当てが必要になると"削除"メモリデ配分についてあの"削除"を非表示にでき、smartpointersが続いております。
int main()
{
int *pI = new int;
int *pArr = new int[10];
これまでのコードを割り当て二つのチャンクの動的メモリ。最初はただの一般intの配列のint値を代入します。
delete pI;
delete [] pArr;
これらの削除算のメモリが割り当てられた、"新しい"s
int ppArr = new int *[10];
for( int indx = 0; indx < 10; ++indx )
{
ppArr[indx] = new int;
}
このビットのコードであっても前を分配すべき。最初に作成していますの社intダイナミックな配列になります。私たちは、それのループを通じて配分を行int各スポットを配列に格納します。
for( int indx = 0; indx < 10; ++indx )
{
delete ppArr[indx];
}
delete [] ppArr;
注意をしっかりとした割り当てこのメモリしたデ割り当てられたものです。これはした場合の削除[]ppArr;初なくなってしまうと、配列に高めることなどが当社のその他のポインタ。そのチャンクまたはメモリするのではなく、システムなどできないのではないの確実な読み出します。
int a=0;
int b=1;
int c=2;
ppArr = new int *[3];
ppArr[0] = &a;
ppArr[1] = &b;
ppArr[2] = &c;
こんには、記載すべきます。だからと言って作業のポインタがないことを意味しないメモリの方にポインターポイントでした動的に割り当てられます。とは言うものですポインタになれるようにサポートをしているもののニーズを削除します。配列を作成したここには動的に割り当てにポインターポイント地方のインスタンスのintの場合は削除いたしましたのみを削除する配列の型になります。
delete [] ppArr;
return 0;
}
最終的に動的に割り当てられたメモリでトリッキー、とにかくできるラップで安全などのスマートポインタはstl容器というよりも自分のできる人生をより楽しんでます。
見 ブポインターコンテナ コンテナの自動削除に含有されているポインタま維持しながら、文法があり通常のSTL。
ポインタとほとんどでメモリを参照しないspiffyちょっと気にします。netオブジェクト。を適切にdestructors各クラスの削除を少し超巨大なループ全体のコードです。
みましょう(pseudocoded)実世界の一例です。想像していたたクラスのようになります:
class Street
{
public:
Street();
~Street();
private:
int HouseNumbers_[];
}
typedef *Street StreetSign;
また配列の通標識などはイギリス、削除をご希望の配列streetsignsこえてくるということではないで自動的に削除しsreets.そしてありますが、やはりレンガやモルタル、思いのため、そうした兆候を指しています。すてっく その特定 インスタンスのポインタ。
配列へのポインタは、概念上のような整数の配列は、配列番号を代表するメモリ位置の様々なオブジェクト。ではないのです。
削除した場合は、[]の配列へのポインタがすべての行いは削除の配列の整数です。
と思いますかループ以上が私た.
なぜだかよくわかりませんこのしっ紛らわしい外観です。
を削除した場合は、配列のポインタまで無料
を記憶するために使用されている量配列の通常のint値を代入します。
ポインタをオブジェクトが整数の場所.
削除したバadressesがオブジェクト。
削除できない内容についてのメモリ空間 では、デストラクタおよびマークのmemにて無料です。
ながって削除され束のadresses オブジェクトだけを見るint値を代入します。
そしてサイクルを通じて配列の初!コ削除 べての要素を削除できますの保管、配列そのものです。
それでは 私 答えたやや長---....変---;)
編集:ジェイソンの答えが間違っているのは、それだけで合にスポットです。も のコンパイラも何もc++)利益ばかり考えて行動していま削除するものではな を指摘。きになっている。その他のプログラム部品を利用することにしたのだろうに、削除されたオブジェ まsegfaultします。がつながらないが妨げます。ものになるので問題を破壊の配列へのポインタをオブジェ、オブジェ 参照している。