【发布时间】:2015-11-17 18:47:53
【问题描述】:
我一直在尝试编写 shannon-fano 压缩的代码,但我想我遇到了内存分配问题。它上升到函数的第二次迭代,然后在
处崩溃 nod *node=new nod;
node->st=new nod;
node->st->st=NULL;
node->st->dr=NULL;
这个函数应该使用 Divide et Impera 创建二叉树,但它第一次调用 shannonFano(n->st,begin); 时会崩溃。我的猜测是内存分配错误。 上课点头 {字符*信息; 诠释*思考; 整数值; 结构点头 *st, *dr;
void shannonFano(nod *n, int dim)
{
if (dim>1)
{
int begin=0;
int end=dim;
int b_sum=n->pondere[0];
int e_sum=n->pondere[dim];
nod *node=new nod;
node->st=new nod;
node->st->st=NULL;
node->st->dr=NULL;
node->dr=new nod;
node->dr->st=NULL;
node->dr->dr=NULL;
while (begin !=end-1)
{
if (b_sum > e_sum)
{end--;
e_sum=e_sum+n->pondere[end];
} else {
begin++;
b_sum=b_sum+n->pondere[begin];
}
}
strncpy(node->info,n->info,begin);
for (int i=0;i<begin;i++)
node->pondere[i]=n->pondere[i];
node->val=0;
n->st=node;
strncpy(node->info,&n->info[end],dim-end+1);
for (int i=end;i<dim;i++)
node->pondere[i]=n->pondere[i];
node->val=1;
n->dr=node;
shannonFano(n->st,begin);
shannonFano(n->dr,dim-end+1);
}
}
【问题讨论】:
-
欢迎来到 SO。请正确格式化您的代码并更好地解释问题所在。谢谢。
标签: c++ memory compression dynamic-allocation