十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
属于内存管理的两个函数,malloc是申请内存的,free是释放内存的。
创新互联建站专注于隆子网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供隆子营销型网站建设,隆子网站制作、隆子网页设计、隆子网站官网定制、小程序开发服务,打造隆子网络公司原创品牌,更为您提供隆子网站排名全网营销落地服务。
1、malloc一般用法:
int *t=NULL;
t=(int *)malloc(sizeof(int));
也可以在sizeof前面加上一个'n*'这就成了一个动态分配数组的方法。
2、free一般用法:
int *t=NULL;
t=(int *)malloc(sizeof(int));
free(t);
这样t所指的空间就被释放掉了。
扩展资料:
malloc函数定义
其函数原型为void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。
如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
参考资料来源:百度百科-malloc函数
参考资料来源:百度百科-free()
都是通过系统API函数向系统申请的
#include stdio.h
#include malloc.h
void main()
{int a=10;
int p*;//定义了一个整数类型的指针
p=malloc(sizeof(int)*a);//分配40个字节的内存空间
*p=5;
*(p+1)=6; //将分配的内存空间的前两个整数赋值为5和6
free(p); //使用完之后释放内存空间
}
但在某些时候,我们需要的数组的长度是无法预先确定的,要解决这样的限制,需要使用动态数组。动态数组是相对于静态数组而言。动态数组的内存空间是从堆(heap)上分配的,是在执行代码过程中分配的,当程序执行到这些语句时,才为其分配。注意,程序员自己负责释放内存。
1
2
#includestdio.h
#includestdlib.h
int main(int arcv, char * argv[])
{
int arrLen;
char *array;
char c;
int i;
printf("please set the size of the len:\n");
scanf("%d", arrLen);
array = (char *)malloc(arrLen*sizeof(char));
if(array == NULL)
{
printf("malloc fail\n");
return -1;
}
for(i = 0; i arrLen;i++)
{
c = getchar();
array[i] =c;//*array++ =c;
}
for( i = 0; i arrLen; i++)
{
printf("this array is %c\n", array[i]);
}
free(array);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mallco和free成对出现,在用完申请的内存之后及时释放,否则会造成内存泄漏。
我们在一些项目中经常出现内存泄漏
malloc(sizeof)是C语言,是向系统申请内存空间的函数。
sizeof一般用于获取字符串的长度,是处理字符串的重要工具。
同时,sizeof在数据结构这门课中是创建结点必要的命令。
例:*head=(node*)malloc(sizeof(node)); [注]node为结构体。
sizeof(node)表示获取node类型的长度,malloc(sizeof(node))表示在内存中申请一个node长度的空间。
关于C语言:
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。
C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。