2014-03-03 51 views
0

我想用GMainLoop。我想知道使用全局變量還是局部變量會更好。我想每5秒調用一次函數。它使用了一些堆變量,我只想malloc一次。我有兩個想法。我可以將所有參數放在一個結構體中。但有時它會是結構體struct中的結構體。所以名稱命名會很複雜並且不好讀。我也可以讓所有的數據全面。這將是這樣的:我應該更好地使用全局變量嗎?

typedef struct data_t 
{ 
    unsigned char *pUncompressStreamData; 
    unsigned char *pStartUncompressStreamData 
    analyzers_t analyzers; 
    GTree *tree; 
}data_t; 
main_loop(data_t data) 
{ 
    //data_mallocs and other stuff 
} 
int main() 
{ 
    data_t data; 

    g_timeout_add_seconds (5, main_loop, data); 
    /free all data member 
} 

OR

unsigned char *pUncompressStreamData; 
unsigned char *pStartUncompressStreamData 
analyzers_t analyzers; 
GTree *tree; 

main_loop(data_t data) 
{ 
    //data_mallocs and other stuff 
} 
int main() 
{ 

    g_timeout_add_seconds (5, main_loop, NULL); 
    /free all data member 
} 

請給我的線索。

回答

1

使用局部變量或結構(更易讀和更模塊化)。請注意,您可以通過它們,例如作爲struct的地址,作爲g_timeout_add_seconds的客戶端數據。所以更喜歡第一個版本到第二個版本。不過,您main應初始化data例如與calloc然後free它在Glib事件循環之後。

相關問題