關於內存分配,結構體定義式多定義了一個指針的情況
typedef struct node{
int a;
int b;
}Node, *ANode;
那麼為變量
Node P
和 為變量 ANode Q
創建空間
P=(Node *)malloc(sizeof(Node));
和 Q=(ANode)malloc(sizeof(ANode));
區別在哪裡
Node P ---這個定義 的節點對象實例
和 為變量 ANode Q ---這個定義了一個指向對象實例的指針
創建空間
P=(Node *)malloc(sizeof(Node)); 所以不能講指針賦值給一個對象
和 Q=(ANode)malloc(sizeof(ANode)); 定義有錯,將4字節的內存強制轉換為node指針,極其容易內存越界啊。
正確用法是ANode Q=(ANode)malloc(sizeof(Node));