2012-12-27 13 views
2

解除分配指针我试图要解除我的线索指针。 这里是我的特里结构对特里

struct trie 
{ 
    int x; 
    trie *next[26]; 
}; 

trie *head; 
trie *tmp; 

,这里是使用DFS

void deallocate(trie *cur) 
{ 
    for (int a=0; a<=25; a++) 
    { 
     if (cur->next[a] != NULL) 
     { 
      tmp = cur->next[a]; 
      cur->next[a] = NULL; 
      deallocate(tmp); 
     } 
    } 
    free(cur); 
} 

,这里是我的头初始化函数

void init() 
{ 
    head = new trie; 
    head->x = 0; 
    for (int a=0; a<=25; a++) 
    { 
     head->next[a] = NULL; 
    } 
} 

和程序我叫deallocate(head);结束后,我解除分配功能

我真正的新指针东西,我的deallocate函数有什么不对吗?感谢

改变数组的大小和被录取了:)看来问题不是指针:)感谢大家

+0

什么是'FOR'? – piokuc

+0

@piokuc它可能是一个扩展为'for int a = 0的宏;一个<25; ++ a)' – ChrisW

+1

它真的是一个C++问题吗?似乎更像C. – StoryTeller

回答

2

您正在使用new分配内存和free释放它。我能看到的唯一错误是,你应该要么使用newdelete,或者mallocfree

+0

我只是改变了一点功能,但我仍然认为某些东西还不正确 – zeulb

+0

@zeulb,你仍然有'新'和'自由'混合。见[this](http://www.codeproject.com/Articles/6555/To-new-is-C-To-malloc-is-C-To-mix-them-is-sin)。 –

+0

@BenRuijl我改变随意删除,但仍然得到运行时错误 – zeulb

1

你的功能是不正确空输入。 deallocate(NULL)将会崩溃。功能(特别是构成框架的一般功能)应该是自给自足的,并且应该能够涵盖每一个可能的输入。

0
  • DEALLOCATE需要处理NULL输入

    如果(CUR == NULL){ 返回 ; }

    在函数开始

  • *头应在声明声明为NULL

    线索*头= NULL;