C语言中malloc函数用法
malloc中文意思为分配内存int函数啥意思
函数声明(函数原型):
void *malloc(int size);
说明:malloc向系统申请分配指定size个字节的内存空间。返回类型是void*类型。Void*表示未确定类型的指针。C,C++规定,void*类型可以强制转换为任何其它类型的指针。
从函数声明上可以看出。Malloc和new至少有两个不同:new返回指定类型的指针,并且可以自动计算所需要大小。比如:
int *p;
p=new int;//返回类型为int*类型(整数型指针),分配大小为sizeof(int);
而malloc则必须由我们计算所需要的字节数,并且在返回后强行转换为实际类型的指针。
int *p;
p=(int *)malloc(sizeof(int));
第一、 malloc函数返回的是void*类型,如果写成:p=malloc(sizeof(int));则程序无法通过编译,报错:“不能讲void*赋值给int*类型变量”。所以必须通过(int*)来强制转换。
第二、 函数的实参为sizeof(int),用于指明一个整型数据需要的大小。如果写成:
int*p=(int*)malloc(1);
代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当往里面存入一个整型数,就会有3个字节无家可归,而直接“住进邻居家”造成的结果是后面的内存中原有数据内容全部被清空。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论