2012-12-27 10 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;