C语言几个申请地址空间的函数
1、void * malloc(unsigned int size)
malloc为动态内存分配,申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址;
- 函数头文件:#include<stdlib.h>
- 申请得到的为连续的存储空间,如果分配失败,则返回一个空指针(NULL)
- 返回的指针类型:void*(未确定类型的指针),也为空间首地址
- 函数参数为指定的字节数
- 最后用free()函数释放内存(free释放内存问题)
- malloc(0)属于合法语句,它能返回一个合法的指针(有一说法是,当malloc分配内存时它除了分配我们指定SIZE的内存块,还会分配额外的内存来存储我们的内存块信息,用于维护该内存块)
#include<stdio.h>
#include<stdlib.h>void main()
{char *p;p = (char*)malloc(100*sizeof(char)); //sizeof获取字节数if(p==NULL)exit(-1); //如果分配空间失败,0为正常退出,其他为非正常退出printf("输入一串字符:");scanf("%s",p);printf("\n输出:%s\n",p);free(p);p = NULL;
}
2、void *realloc(void *ptr, size_t size);
指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小),首先判断ptr指向的区域是否有足够的空间,如果有,则增大(或减少)该内存区域,然后将ptr返回;如果ptr指向的区域没有足够的空间,则分配一段新的内存区域,并且将原ptr的数据拷贝到新的内存区域,释放ptr指向的内存区域(内部完成,不需要外部使用free),同时返回新分配的内存区域的首地址。即重新分配存储器块的地址
- 函数头文件:#include<stdlib.h>
- 改变的区域可以比旧内存区域大或小
- 如果分配失败,则返回空指针NULL,原来的指针仍然有效(此时ptr所指的旧内存区域并没有被释放,需要用free函数释放这一部分内存,因此不能直接赋值给ptr,这样将导致ptr指针变为空指针,使旧内存区域无法得到释放 )
char* Dilatation(char* p,int n)
{char* q;q = (char*)realloc(p,n*sizeof(char));if(!q){free(p); //如果返回为空指针,则释放原来的旧地址内存}return q;
}
3、void* calloc(unsigned int num,unsigned int size)
在内存的动态存储区中分配num个长度为size的连续空间;
注意:num:对象个数,size:对象占据的内存字节数,相较于malloc函数,calloc函数会自动将内存初始化为0
#include<stdio.h>
#include<stdlib.h>int main()
{char*str = NULL;str = (char*)calloc(10,sizeof(char));printf("String is %s\n",str);free(str);return 0;
}
C语言几个申请地址空间的函数相关推荐
- c语言中用于获取字符串长度的函数是,C语言中求字符串长度的函数的几种实现方法...
C语言中求字符串长度的函数的几种实现方法 1.最常用的方法是创建一个计数器,判断是否遇到'\0',不是'\0'指针就往后加一. int my_strlen(const char *str) { ass ...
- C语言增量内存申请 realloc
C语言增量内存申请 realloc void* realloc (void* ptr, size_t size); Reallocate memory block Changes the size o ...
- R语言使用DALEX包的model_profile函数对caret包生成的多个算法模型的离散变量进行分析、使用偏依赖图(Partial Dependence Plots)解释某个离散特征和目标y的关系
R语言使用DALEX包的model_profile函数对caret包生成的多个算法模型的离散变量进行分析.使用偏依赖图(Partial Dependence Plots)解释某个离散特征和目标值y的关 ...
- R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、使用fa.diagram函数可视化斜交旋转因子分析、并解读可视化图形
R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵).使用rotate参数指定进行斜交旋转提取因子.使用fa.diagram函数可视化斜交旋转因子分析.并解读可视化图形 目 ...
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内)、设置method参数为spatialSign
R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内).设置method参数为spatialSign 目录
- R语言使用DALEX包的model_performance函数对caret包生成的多个算法模型进行残差分布分析并使用箱图进行残差分布的可视化
R语言使用DALEX包的model_performance函数对caret包生成的多个算法模型进行残差分布分析并使用箱图进行残差分布的可视化 目录
- R语言ggplot2可视化:使用geom_line函数将dataframe中数据可视化为时间序列(或折线图)(Time Series Plot From a Data Frame)、添加标题、副标题
R语言ggplot2可视化:使用geom_line函数将dataframe中数据可视化为时间序列(或折线图)(Time Series Plot From a Data Frame).添加标题.副标题. ...
- R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵)、使用rotate参数指定进行斜交旋转提取因子、使用nfactors参数指定抽取的因子个数、fa函数因子分析结果解读
R语言使用psych包的fa函数对指定数据集进行因子分析(输入数据为相关性矩阵).使用rotate参数指定进行斜交旋转提取因子.使用nfactors参数指定抽取的因子个数.fa函数因子分析结果解读( ...
- R语言使用ggpubr包的ggarrange函数组合多张结论图(水平并排组合)
R语言使用ggpubr包的ggarrange函数组合多张结论图(水平并排组合) 目录 R语言使用ggpubr包的ggarrange函数组合结论多张结论图(水平并排组合)
最新文章
- git http仓库账号密码缓存至本地:不用每次git push都需要输入密码的方法(类似于windows的凭据管理)
- java----java工具包
- 一键了结CUP100%问题
- 计算机主机内部由什么组成,计算机是由主机和什么组成的?
- 字符串解析成easyui-tree的格式
- 有那个眼界和能力,已经不是年轻人了
- LeetCode(100)——相同的树(JavaScript)
- cdn搭建原理_直播平台搭建并不难,最难的是这两点
- python docx 表格_python-docx表格添加和删除数据
- 王晓初:没有收到消息和电信合并 希望合作步伐加快
- 整体资产评估需要资料清单
- 摩尔定律还会一直生效吗?
- 【插件】油猴插件安装
- android 开发者模式 手机变慢,手机太卡?手机中的“开发者模式”你会用吗?试一下,瞬间流畅!...
- Ribbon的基本使用
- win10自动修复无法关闭的解决方案
- SCM:新一代存储介质技术
- 有趣的歌单昵称_抖音最火的10大神曲 你的歌单里面有几首
- 保险的第一性原理——新保险
- 高光谱异常探测问题解答
热门文章
- Memory Analyzer基本使用
- “即玩即赚”“从玩到赚”类游戏所面临的问题及方案
- 利用中文维基百科数据进行词语相似度word2vec实验
- explorer.exe出错解决方法(转)
- system.img解包打包工具
- 酷点 CoolDock 0.75 发布:内存占用优化 修正多个问题
- 计算机型号或配置,查看电脑各项配置参数的方法
- CPU load和CPU使用率飙高,系统性能问题如何排查?
- 【Java开发】2021最新最全的Java开发工程师学习路线
- 搭建游戏平台需要具备什么条件?