[英]how do I allocate heap memory for the struct?
我有以下代碼
struct USER{
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
} *administrator;
現在我想分配堆內存
這是我的嘗試
administrator *newStruct = (administor*)malloc(sizeof(administrator));
不確定這是否正確...
struct USER {
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
} *administrator;
這不僅是一個結構聲明,它還是一個變量聲明...它與以下內容相同:
struct USER {
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
};
struct USER *administrator;
因此,當您隨后使用sizeof(administrator)
,將得到“ 指針的大小 ” ...這很可能不是您想要的。
您可能想做更多這樣的事情:
struct USER {
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
};
int main(void) {
struct USER *administrator;
administrator = malloc(sizeof(*administrator));
/* - or - */
administrator = malloc(sizeof(struct USER));
/* check that some memory was actually allocated */
if (administrator == NULL) {
fprintf(stderr, "Error: malloc() returned NULL...\n");
return 1;
}
/* ... */
/* don't forget to free! */
free(administrator)
return 0;
}
sizeof(*administrator)
和sizeof(struct USER)
都將為您提供“ USER結構的大小 ”,因此malloc()
的結果將是一個指向足以容納該結構數據的內存的指針。
struct USER{
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
} *administrator;
這將管理員定義為指針變量。 但是,從其他代碼
administrator *newStruct = (administor*)malloc(sizeof(administrator));
看來您想將其用作類型。 為此,您可以使用typedef。
typedef struct USER{
int human_id_number;
char first_name_letter;
int minutes_since_sneezing;
} administrator;
然后使用
administrator *newStruct = (administrator *)malloc(sizeof(administrator));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.