muh*_*aib -1 c malloc pointers structure sizeof
在我不小心使用的代码中
list* Head = malloc(sizeof(list*));
Run Code Online (Sandbox Code Playgroud)
而不是正确的
list* Head = malloc(sizeof(list));
Run Code Online (Sandbox Code Playgroud)
创建一个新的list类型节点,但以后工作得很好.
所以我的问题是为什么它能正常工作?
Sou*_*osh 11
这里的想法是,malloc()不知道(类型/大小)或与将要分配返回值的变量的关系.它接受输入参数,分配所请求大小的内存并返回指向内存块的指针,就是这样.所以,如果您要求错误的内存块大小,malloc()没有什么可以阻止您这样做.一旦你使用返回的指针,你将是
现在,无论哪种情况,您都可以看到它正常工作.前者在某种程度上是允许的(虽然应该避免),但后者是严格禁止的.
忠告:
要避免这些类型的错误,请使用该格式
type * variable = malloc(sizeof *variable);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你有两个好处,
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |