2014-04-04 175 views
0

我有一個幫助函數。不執行,如果語句

enum recstate { 
    initial, 
}; 

struct client { 
    enum recstate state; 
} 

這是我的主要代碼:

struct client *p; 
p->state = initial; 

一切工作正常,直到我嘗試,如果下面的語句來執行此:

if(p->state == initial){ 

我真的不明白爲什麼。 非常感謝。謝謝!

+0

我們都知道之前添加

p = malloc(sizeof(struct client)); 

,你可以在代碼中,你還沒有表現出一個'P->狀態= somethingElse'。 –

+3

嘗試這個'struct client * p = malloc(sizeof(* p));' – BLUEPIXY

+1

您忘了爲結構分配空間。 – Caladan

回答

6

您還沒有爲p分配內存。您正在訪問未授權的內存。訪問未授權內存的行爲未定義。

p->state = initial;