【问题标题】:What will happen if I malloc a pointer of a struct datatype which contains an element of a pointer of another datatype?如果我 malloc 一个包含另一种数据类型指针元素的结构数据类型指针,会发生什么情况?
【发布时间】:2023-01-09 01:24:22
【问题描述】:

考虑以下代码:

typedef struct list_ele
{
    char *value;
    struct list_ele *next;
}list_ele_t;

typedef struct
{
    list_ele_t *head;
    int qSize;
}queue_t;

如果我像这样使用一个函数来 malloc 一个 queue_t 的指针

queue_t *q = malloc(sizeof(queue_t));

它究竟发生了什么?我的意思是,malloc 将创建多大的内存,我应该使用以下代码吗

q->head = malloc(sizeof(list_ele_t));

为q->head申请空间?

我不擅长C语言(;w;) ,我尽力去想,但我一无所获。

【问题讨论】:

    标签: c pointers memory memory-management


    【解决方案1】:

    C 指针通常是 8 个字节,所以当你这样做时

    queue_t *q = malloc(sizeof(queue_t));
    

    您分配了 8 + 4(通常)字节的内存,并且您有 q 指向它。 q->head 将指向一个随机位置,因为您尚未为其分配任何内容。当然,当你这样做

    q->head = malloc(sizeof(list_ele_t));
    

    您分配 8 + 8(通常)字节的内存,然后将 q->head 指向它。

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 2018-03-04
      • 2021-08-22
      • 2020-05-28
      • 1970-01-01
      • 2017-08-10
      • 2014-01-20
      • 2023-03-08
      • 2019-03-18
      相关资源
      最近更新 更多