我是新的C,這是我的第一個問題: 爲這種結構:指向struct的指針數組中的指針,如果設置爲NULL,是否分配內存?
typedef struct Branch
{
Tree * thisTree;
struct Branch * nodes[];
} Branch;
看來,如果我做做工精細如下:
Branch branch1;
branch1->nodes[0] = NULL;
即使我做用於指針NR 0陣列中的未分配內存這種方式:
branch->node[0] = (Branch *) malloc(sizeof(Branch *));
如果我檢查與此代碼:
if (branch1->nodes[0] == NULL)
printf("is NULL");
它輸出到輸出:是NULL
所以我的問題是: 已經存在已爲指針分配的內存?
branch1->nodes[0]
,因爲我有很多的結構,如果我初始化每個分支有固定數量的指針,我得到了很多分配的數據(如果我用的sizeof功能檢查)。 就是這樣:設置爲NULL(上面)的思路錯誤?
我的問題是,指針的內存分配是4個字節。因此,在數組中沒有聲明的指針數量,它何時爲它分配內存? 對不起 我試圖保持這個問題簡單,但我需要通過結構指針的下一個分支達到一個字符串
這意味着我用的結構是
typedef struct Branch
{
Tree * thisTree;
char *string;
struct Branch * nodes[];
} Branch;
所以,如果我不
branch->node[0] = (Branch *) malloc(sizeof(Branch *));
,比
branch->node[0]->String = strdup("text");
我ge編譯器錯誤。
不要在C. – Olaf
你做投malloc'和朋友的'結果。 C不是Java或Python等。指針不是引用,而是第一類對象。使用valgrind。如果你不這樣做,簡單的比較甚至可能會奏效,你不能依賴_undefined behaviour_ ** not **來產生正確的結果。 – Olaf
我喜歡那些演員。 –