首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候使用new-operator?

什么时候使用new-operator?
EN

Stack Overflow用户
提问于 2013-05-30 06:52:12
回答 6查看 1K关注 0票数 0

我应该什么时候使用new-operator

在我的示例中,我使用两种不同的方法得到相同的结果:

代码语言:javascript
复制
#include <iostream>
int main() {
    int *p1;
    int n1 = 5;
    p1 = &n1;

    int *p2;
    p2 = new int;
    *p2 = 5;

    std::cout << *p1 << std::endl;
    std::cout << *p2 << std::endl;
    return 0;
}
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-30 08:12:33

使用动态分配的内存的目的是以下一项(或多项)

  • 运行时控制对象的生命周期。例如,对象是由new手动创建的,并在用户对对象类型的desire.
  • Run-time控制下由delete手动销毁。例如,你可以把多态对象的实际类型放在run-time.
  • Run-time上,控制对象的数量。例如,你可以在运行时决定数组的大小或列表中元素的数量。当对象太大而不能合理地放入任何其他类型的内存时,
  • 。例如,太大而无法在堆栈

上分配的大型输入输出缓冲区

在您的特定示例中,这些原因都不适用,这意味着在那里使用动态内存是没有意义的。

票数 1
EN

Stack Overflow用户

发布于 2013-05-30 16:25:27

考虑到最近的C++11和即将到来的C++14标准,在使用带有垃圾收集的语言进行编程时,您应该主要使用new运算符。对于这些语言来说,这是很自然的。但在现代C++中,您可以(而且通常都应该)避免直接分配内存。我们现在有了一组很好的智能指针。

票数 1
EN

Stack Overflow用户

发布于 2013-05-30 06:58:26

如果要从堆而不是堆栈进行分配,请使用new。或者提升一个抽象级别。当您需要在分配内存的函数(更准确地说是作用域)退出之后(在线程的情况下),需要将分配的内存保持分配状态,请使用new。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16825229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档