sizeof和malloc
时间: 2023-10-13 12:03:07 浏览: 91
引用中的代码是错误的,正确的写法应该是:
```
L.elem =(int*)malloc(LIST_INIT_SIZE * sizeof(int));
if(!L.elem) exit(OVERFLOW);
```
这里的`malloc`函数用来动态分配内存空间,`sizeof(int)`表示一个整型变量所占的字节数。所以`malloc(LIST_INIT_SIZE * sizeof(int))`的含义是分配了`LIST_INIT_SIZE`个整型变量的内存空间。
在引用中提到了`malloc`函数的用法:`malloc`函数向系统申请分配指定大小的内存空间,返回的是`void*`类型的指针,即未确定类型的指针。在C语言中,可以将`void*`类型指针强制转换为其他类型的指针。所以正确的写法是:
```
L = (LinkList)malloc(sizeof(LNode));
```
这里的`sizeof(LNode)`表示`LNode`类型所占的字节数,`malloc(sizeof(LNode))`的含义是分配了一个`LNode`类型的内存空间。
在引用中展示了`malloc`和`realloc`的用法,`realloc`是用于重新分配已经分配的内存空间的函数,`realloc`函数的第一个参数是已经分配的内存空间的指针,第二个参数是重新分配后的内存空间的大小。所以正确的写法是:
```
newbase = (ElemType *)realloc(L.elem, (L.listsize + LISTINCREMENT) * sizeof(ElemType));
```
这里的`realloc`函数用来将`L.elem`指向的内存空间重新分配为`(L.listsize + LISTINCREMENT)`个`ElemType`类型的内存空间。
综上所述,`sizeof`是一个运算符,用于计算数据类型或变量所占的字节数,`malloc`是用来动态分配内存空间的函数,可以根据指定的大小分配相应字节数的内存空间。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [关于malloc和sizeof的用法](https://blog.csdn.net/weixin_30667649/article/details/99787045)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [sizeof运算符、malloc函数及free函数](https://blog.csdn.net/weixin_33690367/article/details/94023088)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文