malloc函数负责向计算机申请确定大小的内存空间。free函数负责释放malloc的申请空间。(1)函数原型void free(void *_Memory);void * malloc(size_t _Size)(2)头文件stdlib.h(3)功能malloc负责申请size_t _S...
 
                
malloc函数负责向计算机申请确定大小的内存空间。
free函数负责释放malloc的申请空间。
(1)函数原型
   void  free(void *_Memory);
  void * malloc(size_t _Size)
(2)头文件
stdlib.h
(3)功能
     malloc负责申请size_t _Size大小的内存空间,并且把所申请得到的内存空间首地址,
 作为void*返回。用户往往必须把void*强制转换。
 	(注意:进程不会自动释放malloc申请的变量,无论是在主函数还是子函数,都不会)
 	
 	正因为malloc申请内存不会自动释放,所以使用malloc必须配套free主动释放,否则申请
 的内存空间将会一直存在到进程被结束。如果申请过多,会导致内存溢出
(4)基础实例代码
	char* ptc = (char*)malloc(30*sizeof(char));
	int* pti = (int*)malloc(30*sizeof(int));
	for(int i=0;i<30;++i)
	{
		printf("%d ",ptc[i]);//用来依次输出每个字符
	}
	for(int i=0;i<30;++i)
	{
		printf("%d ",pti[i]);
	}p
	free(ptc); 
	free(pti); 
(5)输出情况

(6)基础实例代码2:
	char* ptc = (char*)malloc(30*sizeof(char));
	int* pti = (int*)malloc(10*sizeof(int));
	char a[]="zobol's Magic Cabin";
	int b[10]={1,2,3,4,5,6,7,8,9,10};
	strcpy(ptc,a);//字符串复制
	memcpy(pti,b,10*sizeof(int)); //数组内存复制,注意第三个参数是以字节为单位
	printf("%s\n",ptc);//输出
		for(int i=0;i<10;++i)
	{
		printf("%d ",pti[i]);
	}
(7)输出情况:

(8)问题1:如果不用free释放malloc申请的内存,会发生什么事?
回答:那你只需要很简短的代码就可以榨干你的电脑的内存。
	for(int i=0;i<99999999;++i)
		{
			malloc(300000);
		}
(9)如果不用指针接住malloc申请的内存空间的地址,会发生什么事情?
回答:malloc已经向计算机申请了空间了,但是你没有保存返回的空间内存地址,那就等于白占用看计算机空间。
(10)在子函数内部malloc申请的空间,会不会随着子函数结束而释放?
回答:不会!C语言给予了程序员绝对的自由,malloc申请的空间,除了程序员主动调用malloc以外,绝对不会被程序自动释放。
如果有帮助,欢迎关注我的个人公众号:zobol的魔法藏书室
本文标题为:C语言学习之我见-malloc和free内存申请及释放函数
 
				
         
 
            
        基础教程推荐
- C语言预编译#define(预处理) 2023-04-03
- 使用C/C++读写.mat文件的方法详解 2023-03-05
- 如何告诉 MinGW 链接器不要导出所有符号? 2022-10-07
- C语言实现简易停车场管理系统 2023-03-13
- C++高级数据结构之并查集 2023-04-20
- C++类和对象到底是什么 2022-11-12
- 漫画讲解C语言中最近公共祖先的三种类型 2023-01-01
- C语言文件操作与相关函数介绍 2023-06-13
- C/C++ Qt StatusBar底部状态栏应用教程 2023-01-10
- 使用VS2022开发在线远程编译部署的C++程序(图文详解) 2023-01-15
 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
    	 
						 
						 
						 
						 
						 
				 
				 
				 
				