【发布时间】:2015-04-26 00:25:46
【问题描述】:
我正在用 Xcode 编写一个简单的 C++ 程序,它有一个 Message 类。在我的主要内容中,我想声明一条新消息并将其添加到消息列表中。 Xcode 建议我使用:
messages.push_front(*new Message(messageID));
谁能解释 *new 的作用。我是在为 Message 对象动态分配内存还是在堆栈上创建 Message 的实例? 我已经检查了 Xcode,如果使用它并且不删除实例,则没有内存泄漏,所以我假设它正在堆栈上分配。
【问题讨论】:
-
“我已经在 Xcode 中检查过,如果使用它并且不删除实例没有内存泄漏,所以我认为它是在堆栈上分配的。” 你是怎么做到的检查这个?你的假设是完全错误的。
-
显然我还有很多东西要学。我使用的是 Xcode 的泄漏工具,我认为它没有显示任何问题。但感谢您的反馈。
-
messages是什么类型?是std::deque<Message>吗?您的代码看起来像泄漏。我想知道 XCode 的建议是否只是看到您正在调用push_front,我怀疑它需要const Message&,并且看到您正在使用Message指针调用它,因此建议您需要取消引用它,而不警告您那是一个泄漏。你可能想要messages.push_front(Message(messageID));。