| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 814 人关注过本帖
标题:[求助]释放内存时出错
只看楼主 加入收藏
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
 问题点数:0 回复次数:2 
[求助]释放内存时出错

完整的代码如下,但是释放内存出错的地方在代码的最下面。。希望高手解释一下出错的原因,感激不尽。。

#include <iostream>
using namespace std ;

int main()
{
void Conflate(int num[], int count, int res[], int base) ;
void EndConflate(int num[], int count) ;

int m_count ;
cin >> m_count ;

int *m_num = new int[m_count] ;
if(NULL == m_num)
{
cout << "内存分配错误!" << endl ;
exit(0) ;
}

for(int i=0; i<m_count; i++)
{
cin >> m_num[i] ;
}

EndConflate(m_num, m_count) ;

int m = 0 ;
for(i=0; i<m_count; i++, m++)
{
if(10 == m)
{
cout << endl ;
m = 0 ;
}

cout << m_num[i] << " " ;
}

delete []m_num ;

return 0 ;
}

void Conflate(int num[], int count, int res[], int base)
{
int up_num_f ; //第一个子数组的上界
int low_num_f = 0 ; //第一个子数组的下界

int up_num_b ; //第二个子数组的上界
int low_num_b ; //第二个子数组的下界

int pos = 0 ;

while(low_num_f+base <= count-1)
{
low_num_b = low_num_f + base ;
up_num_f = low_num_b - 1 ;
up_num_b = (low_num_b < count) ? (low_num_b+base-1) : (count-1) ;

for(int i=low_num_f, j=low_num_b; (i<=up_num_f && j<=up_num_b); pos++)
{
if(num[i] <= num[j])
{
res[pos] = num[i] ;
i++ ;
}
else
{
res[pos] = num[j] ;
j++ ;
}
}

while(i <= up_num_f)
{
res[pos] = num[i] ;
pos++ ;
i++ ;
}

while(j <= up_num_b)
{
res[pos] = num[j] ;
pos++ ;
j++ ;
}

low_num_f = up_num_b + 1 ;
}

for(int i=low_num_f; i<count; i++, pos++)
{
res[pos] = num[i] ;
}
}

void EndConflate(int num[], int count)
{
int base = 1 ;
int *temp = new int[count] ;
if(NULL == temp)
{
cout << "内存分配错误!" << endl ;
exit(0) ;
}

while(base < count)
{
Conflate(num, count, temp, base) ;

for(int i=0; i<count; i++)
{
num[i] = temp[i] ;
}

base = base * 2 ;
}

delete []temp ; //////////////////////////这里会出错,为什么呀??高手救命啊!!
}

希望高手解释一下出错的原因,感激不尽。。

另外,这个程序用于排序,但似乎结果有时不太正确,如果哪位有空,请帮忙看看(没空就算了哈)

[此贴子已经被作者于2007-8-21 16:04:37编辑过]

搜索更多相关主题的帖子: 内存 释放 
2007-08-21 14:47
neverDie
Rank: 1
等 级:新手上路
威 望:1
帖 子:123
专家分:0
注 册:2007-5-5
收藏
得分:0 
没有错吧,释放动态数组

2007-08-22 00:43
圆圆的鸟蛋
Rank: 1
等 级:新手上路
帖 子:216
专家分:0
注 册:2007-4-22
收藏
得分:0 
呵呵,这个错误很莫名其妙的。。删除除了CPP以外的所有文件重新编译后有正常了。。不知道是不是VC6.0的bug阿。。
哈哈
还是很感谢楼上那位兄弟。。

鸟蛋开始孵化。。。我等待那一天Forever。。
2007-08-22 10:58
快速回复:[求助]释放内存时出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014645 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved