malloc动态内存分配函数原理详解及编程用法举例(本文由www.169it.com搜集整理)
malloc函数函数原型定义void *malloc(size_t size);
malloc函数原型说明
malloc函数向系统申请分配size个字节的内存空间。返回值类型是 void* 类型。void* 表示未确定类型的指针。c,c++规定,void* 类型可以强制转换为任何其它类型的指针。
malloc动态内存分配函数头文件#include
#include
malloc函数使用要求
这个函数要实现的功能是在系统中分配一段连续的可用的内存,具体有如下要求:
1.malloc分配的内存大小至少为size参数所指定的字节数.
2.malloc的返回值是一个指针,指向一段可用内存的起始地址.
3.多次调用malloc所分配的地址不能有重叠部分,除非某次malloc所分配的地址被释放掉.
4.malloc应该尽快完成内存分配并返回.
5.实现malloc时应同时实现内存大小调整和内存释放函数(即realloc和free).
对于malloc更多的说明可以在linux shell命令行中键入以下命令查看:
man malloc
可以看见linux下malloc函数的详细使用手册
与malloc函数相关的函数
calloc()函数、realloc()函数、free()函数
malloc函数用法举例
malloc函数用法实例1
#include
#include
int main()
{
char *p;
p=(char *)malloc(100);
if(p)
printf("Memory Allocated at: %x/n",p);
else
printf("Not Enough Memory!/n");
free(p);
return 0;
}
malloc函数用法实例2
#include
#include
int main()
{
// Code...
char *Ptr = NULL;
Ptr = (char *)malloc(100 * sizeof(char));
if (NULL == Ptr)
{
exit (1);
}
gets(Ptr);
// code...
free(Ptr);
Ptr = NULL;
// code...
}
malloc函数编程实例3
/*
//本文来自 www.169it.com
in参数:申请的堆内存字节数,注意int,short,float需要自己乘上相应字节数。
out返回值:void *
*/
main()
{
char *str=NULL;
str=(char *)malloc(10); //注意malloc返回值是void *,申请时需要强制转换成需要的类型
memset(str,0,10); //如果不清空,申请的区域值是随机的,养成好习惯
strcpy(str,"happylife"); //使用strcpy特别注意拷贝的字符串长度<=10-1,即要预留字符串结束标志'