1、名词解释:
malloc:memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。
2、函数原型:
void *malloc(size_t size);
备注:
void* 表示未确定类型的指针,void *可以指向任何类型的数据,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据(比如是char还是int或者...),在返回后强行转换为实际类型的指针。
例如:
char buff[]="name=ljm";
char *word;
int i;
int wsize=20;
word=(char*)malloc(sizeof(char)*(wsize+1));//分配地址空间
for(i=0;i<8;i++)
{
word[i]=buff[i];
}
printf("%s\n",word);
错误案例:
int* p = (int *) malloc (1);代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成的结果是后面的内存中原有数据内容全部被清空。
正确案例:
malloc 也可以达到 new [] 的效果,申请出一段连续的内存,方法无非是指定你所需要内存大小。比如想分配100个int类型的空间:
int* p = (int *) malloc (sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。