积极答复者
内存泄漏?

问题
-
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);
//}
}}
答案
-
你好!
谢谢你的反馈信息。我想我找到原因并解决这个问题了。
请用下面的代码替换你原来的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 论坛好帮手
- 已建议为答案 Jackie-SunModerator 2011年3月25日 1:54
- 已标记为答案 冯瑞涛Moderator 2012年4月30日 3:10
全部回复
-
你好!
请问你执行这段代码的时候有没有遇到什么异常呢?如果有的话可不可以提供异常信息给我们呢?我们好做进一步判断。谢谢!
Jackie Sun [MSFT]
如果您对我们的论坛在线支持服务有任何的意见或建议,请通过邮件告诉我们。
立刻免费下载 MSDN 论坛好帮手
- 已编辑 Jackie-SunModerator 2011年3月25日 1: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 论坛好帮手
- 已建议为答案 Jackie-SunModerator 2011年3月25日 1:54
- 已标记为答案 冯瑞涛Moderator 2012年4月30日 3:10