本帖最后由 assicen 于 2013-03-16 13:33:27 编辑

解决方案 »

  1.   

    在listObj.Clear();后 myObj1 myObj2这两个对象会不会被释放   --如果没有其他引用,会释放
    如果不执行listObj.Clear(); 那么myObj1 myObj2的存活周期是否和listObj一样?  ---一样,这里List是static的所以只有对这个变量显式赋值时才有可能释放
    如果执行了listObj[0]=null; 0对应的是myObj1 那么myObj1会不会被释放   ---会,只要之后没有再使用变量myObj1
      

  2.   


    class Program
    {
        public static List<byte[]> listData=new List<byte[]>();    static void memset(byte[] data, byte num)
        {
            for (int n = 0; n < data.Length; n++) data[n] = num;
        }    static void Main(string[] args)
        {
            while (true)
            {
                listData.Add(new byte[1024 * 1024 * 1024]);
                memset(listData[listData.Count - 1], 0xFF);
                Console.WriteLine("ok");
                Console.ReadKey();
                //listData[listData.Count-1] = null;
                //listData.Clear();
            }
        }
    }我刚才做了个实验 证实阁下的说法是正确的 回答很完美 给分