[英]malloc of pointer to structure works why?
在我不小心使用的代码中
list* Head = malloc(sizeof(list*));
而不是正确的
list* Head = malloc(sizeof(list));
创建一个新的list
类型节点,但稍后效果很好。
所以我的问题是为什么它能正常工作?
这里的想法是, malloc()
没有想法(类型/大小)或与将要分配返回值的变量的关系。 它使用输入参数,分配请求大小的内存,然后返回指向内存块的指针。 因此,以防万一,您请求了错误大小的内存块, malloc()
并没有阻止您这样做的能力。 使用返回的指针后,您要么
现在,无论哪种情况,您都可以看到它正常工作 。 前者在某种程度上是允许的(尽管应该避免),但后者是严格的禁止使用。
忠告词:
为避免这些类型的错误,请使用以下格式
type * variable = malloc(sizeof *variable);
在这种情况下,您有两个优点,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.