首页 > 其他分享 >用malloc申请空间的开辟和free空间的释放

用malloc申请空间的开辟和free空间的释放

时间:2024-10-23 10:48:38浏览次数:3  
标签:10 malloc int free printf 空间 include

malloc的头文件是#include<stdlib.h>

malloc开辟的空间虽然和数组一样可以调用,并且都是连续存放的,但是他们所在的位置不一样

malloc开辟的空间位置在堆区;

局部数组是把数据存在栈区;

动态内存空间的大小可以调整;

如果申请成功,会返回开辟好的空间的起始地址;

如果开辟失败,会返回NULL指针;

#include<stdio.h>
#incldue<stdlib.h>
#include<errno.h>
int main()
{
	//申请10个整型的空间
	int* p = (int*)malloc(10 * sizeof(int));
	if (p == NULL)
	{
		//空间开辟失败
		perror("malloc");
		return 1;//错误返回1
	}
	//可以使用这40个字节
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		*(p + i) = i + 1;
	}
	//打印出来看看,是否完成
	for (i = 0; i < 10; i++)
	{
		printf("%d  ", *(p + i));
	}
	printf("\n");
	return 0;
}

输出结果:


如果开辟失败:输入一个超级大的数字

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
int main()
{
	//申请10个整型的空间
	int* p = (int*)malloc(INT_MAX);
	if (p == NULL)
	{
		//空间开辟失败
		perror("malloc");
		return 1;//错误返回1
	}
	//可以使用这40个字节
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		*(p + i) = i + 1;
	}
	//打印出来看看,是否完成
	for (i = 0; i < 10; i++)
	{
		printf("%d  ", *(p + i));
	}
	printf("\n");
	return 0;
}

输出结果:

最后需要释放malloc申请的空间

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
int main()
{
	//申请10个整型的空间
	int* p = (int*)malloc(INT_MAX);
	if (p == NULL)
	{
		//空间开辟失败
		perror("malloc");
		return 1;//错误返回1
	}
	//可以使用这40个字节
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		*(p + i) = i + 1;
	}
	//打印出来看看,是否完成
	for (i = 0; i < 10; i++)
	{
		printf("%d  ", *(p + i));
	}
	printf("\n");
	free(p);
	p = NULL;
	return 0;
}

free(p);释放p会让p指向的空间不属于当前程序,但是还是可以找到这个空间

所以需要让p=NULL;,让p变成空指针

标签:10,malloc,int,free,printf,空间,include
From: https://blog.csdn.net/2301_78189441/article/details/143133930

相关文章

  • Oracle Spatial详解(空间数据库)
    OracleSpatial详解(空间数据库)完全转自:http://www.cnblogs.com/frogbag/archive/2007/10/17/926870.html Step1.创建一张表,其中shape用来存放空间数据 CREATETABLEmylake(   feature_idNUMBERPRIMARYKEY,   nameVARCHAR2(32),    shapeMDSYS.SDO_G......
  • Oracle-Spatial空间数据库基础
    Oracle-Spatial空间数据库基础完全转自:https://blog.csdn.net/wyp_666/article/details/72775714一、简介 oraclespatial是oracle公司推出的空间数据库组件,使oracle具备处理空间数据的能力。从9i开始对空间数据提供了比较完备的支持。OracleSpatial主要通过元数据表、空间......
  • 空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
    空间数据库基础理论GIS空间数据处理分析涉及的基本概念周陆军​腾讯科技(深圳)有限公司前端开发​关注他 63人赞同了该文章《空间数据库》课程整理汇总,106篇课程,内容太长,学习中,把一些关键点,汇总记下笔记地理空间GIS中的地理空间(Geo-spatial)是指......
  • 一篇文章带你玩转PostGIS空间数据库
    一篇文章带你玩转PostGIS空间数据库发布于 2023-10-1714:35:555.4K0举报文章被收录于专栏:半旧的技术栈一篇文章带你玩转PostGIS空间数据库一、空间数据库介绍1.什么是空间数据库人类理解世界其实是按照三维的角度,而传统的关系型数据库是二维的,要......
  • SpatialDB:让空间转录组数据可视化
    SpatialDB:让空间转录组数据可视化原创修改于 2021-08-3115:30:101.3K0举报文章被收录于专栏:国家基因库生命大数据平台2019年11月,来自中国科学院生物物理研究所高通量测序中心的研究人员发布第一个单细胞空间转录组数据库及数据在线可视化平台:Spatial......
  • 空间索引Spatial Indexing
    空间索引SpatialIndexing李喆叫我桔子吧PhD(Database)​关注他 148人赞同了该文章大家第一次接触到index应该是在上数据库这门课的时候。之所以数据库需要index,主要是因为数据量和应用层面的操作这两个原因,缺一不可。回忆下数据库最基本的......
  • FreeRTOS学习——临界段代码保护及调度器挂起与恢复及其API函数内部实现详解
    FreeRTOS临界段代码保护及调度器挂起与恢复FreeRTOS临界段代码保护及调度器挂起与恢复临界保护区任务调度器挂起与恢复使用格式特点函数内部实现**vTaskSuspendAll();****==总结==**:xTaskResumeAll();FreeRTOS临界段代码保护及调度器挂起与恢复临界保护区什么......
  • PbootCMS上传空间后前台打开内页显示404错误怎么解决
    检查URL规则配置登录PbootCMS后台。导航至 配置参数 -> URL规则。选择 伪静态模式 并保存。添加伪静态规则根据你的服务器环境,选择合适的伪静态规则文件。一般情况下,Apache环境使用 .htaccess 文件。Apache环境配置将 rewrite 文件夹中的 .hta......
  • 基于Java+SpringBoot+Vue+HTML5企业级工位管理系统(源码+LW+调试文档+讲解等)/企业级
    博主介绍......
  • 网络空间安全导论笔记
    分组密码分为对称分组密码和非对称分组密码,习惯上分组密码指对称分组密码加解密速度较快,安全性好子密钥生成的评价指标实现简单、速度快、满足轮函数F的要求种子密钥的所有比特对每个子密钥比特的影响大致相同轮函数F是分组密码的核心,是分组密码中单轮加解密函数准则......