Memory 循环中的实例化-原语和对象

Memory 循环中的实例化-原语和对象,memory,instantiation,Memory,Instantiation,为了使这种语言不可知,让我们按照以下内容编写一些伪代码: for(int i=0;i<=N;i++){ double d=0; userDefinedObject o=new userDefinedObject(); //effectively do something useful o.destroy(); } 用于(iTi=0;i java垃圾收集器将负责任何内存分配而不引用,这意味着如果在每次

为了使这种语言不可知,让我们按照以下内容编写一些伪代码:

    for(int i=0;i<=N;i++){
        double d=0;
        userDefinedObject o=new userDefinedObject();    

        //effectively do something useful
        o.destroy();
    }

用于(iTi=0;i java垃圾收集器将负责任何内存分配而不引用,这意味着如果在每次迭代中实例化,则分配新内存,并丢失对前一个的引用。”内存分配,特别是对象初始化需要时间和过程。因此,如果在一个小程序上执行此操作,您可能不会感觉有任何错误。但假设您使用的是类似于
位图的东西,则分配将完全拥有您的内存


对于这两种情况,我会说这是一个品味问题,但在实际项目中,您应该完全确定需要在循环中初始化这是高度依赖于语言的,我不确定您的问题的哪一部分是“使用原语执行此操作”中的“此”。如果您要在循环内而不是在循环外声明它,这很好。如果您希望每次迭代都以新初始化为0的
d
开始,则在循环内声明它是最好的方法。它不会导致性能下降。对于第二部分,您不需要在中显式调用对象的析构函数C++、java、python或最流行的语言。(在C中,你需要明确地破坏它)。GC将为你破坏对象。在C++中,你应该在栈上声明它或通过<代码> STD::UnQuyJPPT< /C> >,C++将调用析构函数。是循环中的实例化,如问题标题所示。如果不清楚,请指出。