哦```原来sizeof是字节的意思啊```
那就明白malloc(5*sizeof(int))的意思了```
但是(int *)还不明白``感觉是定义一个指针参数``
女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
看不懂```
为什么要在malloc前加(int *)
malloc后面的(5*sizeof(int))是什么意思啊```
以前用malloc申请的空间是void型,需要强制转化成需要的类型,所以要加例如(int *)的东西。
C99规定可以直接写成p=malloc( )的形式。
至于你malloc(5)是指申请5个字节的空间。
写成malloc(5*sizeof(int))的原因是为了移植性高,因为不是所有机子上的int所占的空间都一样的,例如32位机子上一般int是2个字节,而64位机上就是4个字节了。
还有p=malloc(5);是指p指向一块大小为五个字节的内存,不是说他相当于p[5];
原型:extern void *malloc(unsigned int num_bytes);
用法:#include <alloc.h>
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
举例:
// malloc.c
#include <syslib.h>
#include <alloc.h>
main()
{
char *p;
clrscr(); // clear screen
p=(char *)malloc(100);
if(p)
printf("Memory Allocated at: %x",p);
else
printf("Not Enough Memory!\n");
free(p);
getchar();
return 0;
}