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内存申请及释放函数的更多相关文章

  1. C++学习011-常用内存分配及释放函数

    C++用有多种方法来分配及释放内存,下面是一些经常使用的内存分配及释放函数 现在我还是一个技术小白,一般用到也指示 new+delete 和 malloc和free 其他的也是在学习中看到,下面的文字 ...

  2. C语言学习之我见-strcpy()字符串复制函数

    strcpy()函数,用于两个字符串值的复制. (1)函数原型 char * strcpy(char * _Dest,const char * _Source); (2)头文件 string.h (3 ...

  3. C语言学习之我见-strncat()可调整的字符串拼接函数

    strncat()函数,用于两个字符串的拼接. (1)函数原型 char * strncat(char * Dest,const char * Source,size_t _Count)` (2)头文 ...

  4. C语言学习之我见-strcat()字符拼接函数(有缺陷)

    strcat()函数,用于两个字符串的拼接. (1)函数原型: char * strcat(char *Dest,const char * Source); (2)头文件: #include < ...

  5. C语言学习之我见-strlen()字符串长度函数

    strlen()函数,负责给出字符串的长度.注意是字符串的长度,不是字符数组的长度. (1)函数原型: size_t __cdecl strlen(const char *_Str); (2)头文件` ...

  6. C语言学习之我见-memchr()内存查找字符函数

    memchr()内存查找字符函数:主要用于从内存中查找自己需要的字符位置. (1)函数原型: void *memchr(const void *_Buf ,int _Val,size_t _MaxCo ...

  7. C语言学习之我见-strncpy()字符串复制函数(可控制范围)

    strncpy()函数,用于两个字符串值的复制. (1)函数原型 char *strncpy(char * _Dest,const char * _Source,size_t _Count); (2) ...

  8. C语言学习之我见-strncmp()字符串比较函数(控制范围)

    strncmp()函数,用于范围内,两个字符串的比较,n表示最大比较范围. (1)函数原型 int strncmp(const char *_Str1,const char *_Str2,size_t ...

  9. C语言学习之我见-strcmp()字符串比较函数

    strcmp()函数,用于两个字符串的比较. (1)函数原型 int strcmp(const char *_Str1,const char *_Str2); (2)头文件 string.h (3)功 ...

随机推荐

  1. C++五子棋(一)——开发环境

    开发环境 环境准备 Visual Studio Windows EasyX图形库 素材文件 素材文件已经准备了,点击此处获取 百度网盘链接 提取码:su6p 创建项目 打开Visual Studio ...

  2. 学习day44

    初步学完html的知识

  3. Fastjsonfan反序列链学习前置知识

    Fastjson前置知识 Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象. Fastjson 可以操作任何 ...

  4. partTwo自动出题程序

    需求介绍 一家软件公司程序员二柱的小孩上了小学二年级,老师让家长每天出30道四则运算题目给小学生做. 二柱立马就想到写一个小程序来做这件事. 这个事情可以用很多语言或者工具来实现: Excel, C/ ...

  5. 3.4 常用Linux命令

    1.cat命令 cat命令用于查看纯文本文件(内容较少的) 2.more命令 more命令用于查看纯文本文件(内容较多的),语法格式为"more [参数] 文件名称". 3.hea ...

  6. FreeRTOS --(2)内存管理 heap1

    转载自https://blog.csdn.net/zhoutaopower/article/details/106631237 FreeRTOS 提供了5种内存堆管理方案,分别对应heap1/heap ...

  7. R 数据可视化: PCA 主成分分析图

    简介 主成分分析(Principal Component Analysis,PCA)是一种无监督的数据降维方法,通过主成分分析可以尽可能保留下具备区分性的低维数据特征.主成分分析图能帮助我们直观地感受 ...

  8. 【Azure Developer】使用 adal4j(Azure Active Directory authentication library for Java)如何来获取Token呢

    问题描述 使用中国区的Azure,在获取Token时候,参考了 adal4j的代码,在官方文档中,发现了如下的片段代码: ExecutorService service = Executors.new ...

  9. Linux_yum源仓库-本地-网络-练习实验

    1.本地光盘挂载使用yum源 实验环境centos8 系统版本CentOS-8.3.2011-x86_64-dvd1 1)配置前检查 1.1 虚拟机设置选择对应版本镜像文件 1.2 启动虚拟机后处于连 ...

  10. [Istio是什么?] 还不知道你就out了,一文40分钟快速理解

    @ 目录 前言 Istio是什么? 服务网格是什么? 应用场景 为什么使用Istio? 流量管理介绍 istio架构 Envoy Sidecar Istiod 虚拟服务(VirtualService) ...