1

いくつか例を挙げて説明します。まず、次のようなオブジェクトを宣言します

CString* param = new CString[100]

これを宣言すると、実装された文字列であるため、メモリが少し増加します。次に、このオブジェクトを CString のリストに保存します

List<CString> myList = new List<CString>; // new list of CString

myList.add(param);

これが私の質問です。知りたいのですが、myList を削除しても、パラメーターは削除されませんよね? そして、paramのメモリはまだ存在しています。

私は誤解していますか?

4

2 に答える 2

5

myListそのコードは、ポインターではなくオブジェクトを保持し、ポインターではなくオブジェクトであるため、コンパイルされませんmyList。したがって、そこnewでは違法です。

List<CString> myList;タイプのオブジェクトですList<CString>new List<CString>;を返しますList<CString>*paramですCString*。ではなく、 をmyList.add()期待します。CStringCString*

結論: これらはすべて基本的な概念です。良い本を手に取って読んでください。C++ は複雑な言語です。例のスニペットから学習したり、同じ概念や構文が他の言語と同じであると想定したりすることはできません。

于 2012-09-17T09:27:51.423 に答える
1

c++ の経験則: 入力する場合は、何らかのスマート ポインターを使用している場合を除いて、newが必要です。delete

あなたの場合、使用する必要があることに注意してください

delete [] param ;

アレイを削除しているとき。

于 2012-09-17T09:35:50.483 に答える