我最近有一个任务,我必须为结构动态分配内存。我用了这个方法:

myStruct *struct1 = malloc(sizeof *struct1);

这很管用但是,我不明白怎么做。我认为struct1指针在那一点上没有初始化,因此应该没有任何大小因此,malloc(sizeof *struct1)如何返回要分配的有效内存量?

最佳答案

sizeofC中的运算符不计算操作数。它只是看看类型例如:

#include <stdio.h>

int main(void)
{
    int i = 0;
    printf("%zu\n", sizeof i++);
    printf("%d\n", i);
    return 0;
}

如果运行上述程序,您将看到i仍然是0。
因此,在您的示例中,*struct1不计算,它只用于类型信息。

关于c - 如何在C中动态分配结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15650858/

10-10 19:05