我对此有一些想法,但是我想要一个更专业和更有经验的解释。
typedef struct{
char str[50];
unsigned short num;
}s;
s *name = (s *) malloc(sizeof(s));
第一部分定义一个结构。我对此没有问题,
这将创建一个指向“ s”结构的指针。malloc()
返回一个内存地址,该地址将被转换为指向“ s”的指针。但是,sizeof(s)
我相信我在理解一些问题。
char str[50];
= 50个字节。
unsigned short num;
= 2个字节。
sizeof(s)返回52个字节?
malloc(sizeof(s))
分配52个字节并返回第一个地址,并将其强制转换为指向“ s”的指针?
还有一个问题!如何使用内联malloc执行错误处理?
感谢任何可以帮助您澄清这一点的人!
malloc
。malloc返回void *,在C语言中,void *隐式转换为您指定的任何类型...sizeof(s)
取决于填充以及实现(cos,sizeof(unsigned short)
在不同平台上会有所不同...)。在C语言中,如果要检查错误,则必须将的返回值malloc
与进行比较NULL
。
如果(name == NULL)退出(1); // EXIT_FAILURE
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句