none
内存泄漏? RRS feed

  • 问题

  • class Program
        {
           static int p = 0;
            static void Main(string[] args)
            {
                StringBuilder sb = new StringBuilder();
                StreamReader sr = new StreamReader(@"D:\index.txt", Encoding.GetEncoding("gb2312"));
               
                sb.Append(sr.ReadToEnd());
                char[] c = new char[] { '\r', '\n' };

                object[] xx1 = sb.ToString().Split(c);
                //sb.dis
                sr.Dispose();
                object[] xx = new object[(xx1.Length / 2)+1];
                int u = 0;
                for (int i = 0; i < xx1.Length; i++)
                {
                    if (!xx1[i].Equals(""))
                    {
                        xx[u] = xx1[i];
                        u++;
                    }
                }
               
                //object[] yy = new object[xx.Length];
                ArrayList list = new ArrayList();
                int y = 0;
                for (int i = 0; i < xx.Length; i++)
                {
                    if (xx[i] != null)
                    {
                        if (xx[i].ToString().Split(' ')[0].Trim().Length >= 8)
                        {
                            //yy[y] = xx[i].ToString().Split(' ')[0].Substring(0, 8);
                            //y++;
                            list.Add(xx[i].ToString().Split(' ')[0].Substring(0, 8));
                        }
                    }
                }

                //for (int i = 0; i < yy.Length; i++)
                //{
                //    if(yy[i] != null){
                //        if (ge(yy[i], yy, i))
                //        {
                //            p++;
                //        }
                //    }
                //}

                //for (int i = 0; i < list.Count; i++)
                //{
                //    if ()
                //    {
                //        p++;
                //    }
                //}          
               // list.Sort();
                ge(list[0], list, 0);
              
               
                Console .WriteLine(p.ToString());
            }
           static ArrayList list1 = new ArrayList();
            static void ge(object e, ArrayList n, int j)
            {
                n.RemoveAt(0);
                if (n.Contains(e) && !list1.Contains(e))
                {
                    p++;
                    list1.Add(e);
                }
                //for (int i = j; i < n.Count; i++)
                //{
                //    if (i != j)
                //    {
                //        if (e.Equals(n[i]))
                //        {
                //            p++;
                //            break;
                //        }
                //    }
                //}
                //if(j < (n.Count-1))
                //{
                //    int h = ++j;
                    ge(n[0], n, 0);
               //}
            }

        }

    2011年3月21日 10:07

答案

  • 你好!

    谢谢你的反馈信息。我想我找到原因并解决这个问题了。

    请用下面的代码替换你原来的ge()方法,一切就正常了。

            static void ge(object e, ArrayList n, int j)

            {

                if (n.Count != 0)

                {

                  

                    if (n.Contains(e) && !list1.Contains(e))

                    {

                        p++;

                        list1.Add(e);

                    }

                    n.Remove(e);

                    if (n.Count > 0)

                        ge(n[0], n, 0);

                }

     

            }

    希望能帮到你,谢谢!


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月25日 1:52
    版主

全部回复

  • 你好!

    请问你执行这段代码的时候有没有遇到什么异常呢?如果有的话可不可以提供异常信息给我们呢?我们好做进一步判断。谢谢!

     


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月23日 7:08
    版主
  • 一个异常的类型的系统。StackOverflowException”发生在未知的模块。
    2011年3月23日 9:54
  • 你好!

    谢谢你的反馈信息。我想我找到原因并解决这个问题了。

    请用下面的代码替换你原来的ge()方法,一切就正常了。

            static void ge(object e, ArrayList n, int j)

            {

                if (n.Count != 0)

                {

                  

                    if (n.Contains(e) && !list1.Contains(e))

                    {

                        p++;

                        list1.Add(e);

                    }

                    n.Remove(e);

                    if (n.Count > 0)

                        ge(n[0], n, 0);

                }

     

            }

    希望能帮到你,谢谢!


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月25日 1:52
    版主
  • 如果是2G文件,一样的错,

    我是要求重复的数有多少个,而不是求重复的总个数

    比如

    1 2 3 1 3 计算出来应该等于2【1和3有重复】;而不是4;


    2011年3月25日 11:16
  • 你好!

    谢谢你的反馈!

    但是我发现你代码中的这句if (xx[i].ToString().Split(' ')[0].Trim().Length >= 8)表明你是想要长度大于8 的字符串个数,而不是你所说的重复的个数。我提供的代码是根据你给出的代码写的,如果我理解的有误,或者你还有别的代码来实现你所说的功能,请告诉我,谢谢!


    Jackie Sun [MSFT]
    如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
    MSDN 论坛好帮手 立刻免费下载  MSDN 论坛好帮手
    2011年3月28日 8:47
    版主
  • StackOverflowException 比較常發生在無窮迴圈的情況。

    可檢查程式中是否有無窮迴圈的現象。


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    2011年3月28日 9:24
  • 我用1M的数据测试过 是好的

    2011年3月28日 10:26