返回一个引用对象涉及到的内存问题

using System;
namespace ConsoleApplication1
{
    class Program
    {
        int [] f()  //此函数的返回值类型为int[]
        { int []a = new int[5] { 1, 2, 3, 4, 5 };
          return a;
        }
         static void Main(string[] args)
         {Program obj=new Program();
          int[] a=obj.f();
          for (int i = 0;i<a.Length; i++)
          {Console.Write(a[i]+" ");}
          Console.ReadLine();
        }

    }
}//这个程序主要是想说明内存回收技术,当一个对象在程序中不再被使用是,即当前代码不属于对象的作用域时或把对象的引用赋值为空,则对象就成为了一个无用的对象。垃圾收集器会自动扫描对象的的动态内存区对不在使用的对象做上标记以进行垃圾回收!
时间: 2024-10-16 08:35:51

返回一个引用对象涉及到的内存问题的相关文章

函数可以返回一个局部对象,而不能返回一个局部对象的引用(指针):

函数可以返回一个局部对象,而不能返回一个局部对象的引用(指针):当函数返回一个局部对象时,虽然这个对象已经释放,但是返回时会产生一个临时的对象.而当返回一个局部对象的引用时,这个对象已经不存在了.这就要求在函数参数中,包含一个引用或指针.int &func(int a,int b,int &retsult){ retsult = a + b; return &retsult}但是如下代码是错误的(返回局部对象的引用)int &func(int a,int b){ int &

条款23: 必须返回一个对象时不要试图返回一个引用

class rational { public: rational(int numerator = 0, int denominator = 1); ... private: int n, d; // 分子和分母 friend const rational // 参见条款21:为什么 operator*(const rational& lhs, // 返回值是const const rational& rhs) }; inline const rational operator*(cons

在必须返回一个对象时,不要去尝试返回一个引用

一旦程序员把注意力都转向了对象传值方式隐含的效率问题(参见第 20 条)时,许多人都变成了极端的“改革运动者”,他们对传值方法采取斩草除根的态度,在他们不屈不挠追求传递引用方式的纯粹性的同时,他们也犯下了致命的错误:有时候传递的引用所指向的对象并不存在.这决不是一件好事情. 请看下面的示例,其中的 Rational 类用来表示有理数,其中还包括一个函数来计算两个有理数的乘积: class Rational {public:  Rational(int numerator = 0, int den

返回一个集合对象,同时这个集合的对象的属性又是一个集合对象的处理方法(ViewModel)

如果遇到需要返回一个集合对象,其中该集合中的属性又是一个集合.第一种:可在考虑用外键关联,比如在控制器中可以采用预先加载的方式加载关联的数据,比如 RoleManager.Roles.Include<x =>r.Users>.ToList(); 第二种 可以考虑使用视图模型ViewModel的方式.第二种方式的适用范围更加广泛,第一种方式使用较为简单,但使用的场合有限. 一.建立视图模型 ViewModel public class IndexRoleViewModel { public

zbb20170928 解决springmvc在单纯返回一个字符串对象时所出现的乱码情况

解决springmvc在单纯返回一个字符串对象时所出现的乱码情况 使 用springmvc框架开发了这么长时间,之前都是直接返回jsp页面,乱码情况都是通过配置和手动编解码来解决,但是今天突然返回一段单纯的字符串 时,发现中文乱码情况解决不了了,下面就给各位分享一下如何解决返回字符串时出现的乱码情况(无需实验,直接使用即可). 之前我们都是通过在springmvc的核心配置文件中配置视图解析器来返回指定的页面,将数据通过Model对象渲染页面,最后响应给用户,但是这种方式我们是通过在web.xm

使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head> <meta htt

new一个JAVA对象的时候,内存是怎么分配的?

new 对象的时候 在内存中 建立一个 内存区域 就是堆内存 用来存放对象的属性,当new完对象把对象的地址赋给对象的引用变量 这个时候 又在内存中建立一个区域 叫栈内存 用来存储 引用变量 引用变量存储对象的地址, 当对象没有被任何引用变量 引用的时候 就变成了 垃圾会被java的垃圾清除机制清除掉

JavaSE8基础 函数返回一个匿名对象 简单示例

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: class Javaer { public void sayHello() { System.out.println("Java Hello"); } } class Demo { public static Javaer getJavaerObject() { return new Javaer(

js中如何返回一个存放对象的数组?

我这边需要返回后台数据的形式是这样的 {[ { "ItemId": "18", "SelectId": 2 }, { "ItemId": "19", "SelectId": 1 }, { "ItemId": "20", "SelectId": 1 }, { "ItemId": "21",