1

我将举一些例子并解释。首先,我声明了一些对象,例如

CString* param = new CString[100]

当我声明这个时,我的记忆会增加一点,因为它是一些实现的字符串。然后我将这个对象存储在一些 CString 列表中,就像

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

myList.add(param);

这是我的问题:我想知道,当我删除 myList 时,我的参数不会被删除,对吧?并且参数中的内存仍然存在。

我误解了吗?

4

2 回答 2

5

该代码无法编译,因为myList它包含对象,而不是指针,并且因为myList是对象,而不是指针,所以new在那里是非法的:

List<CString> myList;是一个类型的对象List<CString>new List<CString>;返回一个List<CString>*param是一个CString*myList.add()期望 a CString,而不是 a CString*

底线:这些都是基本概念,拿一本好书读一读。C++ 是一门复杂的语言,你不能只从示例片段中学习它,或者假设相同的概念和语法与其他语言相同。

于 2012-09-17T09:27:51.423 回答
1

c++ 的经验法则:如果您键入,则new需要 a delete,除非您使用某种智能指针。

请注意,在您的情况下,您需要使用

delete [] param ;

当您删除数组时。

于 2012-09-17T09:35:50.483 回答