C语言如何动态分配空间:malloc
一般的变量在定义是就要确定大小,但是有的时候不知道用户的需要,就比如说排序,你不知道用户想要给几个数排序,所以为了保险起见往往是定义一个很大的变量,而实际上用户可能只需要给5个数排序,你却int k[1024];来存放要排序的数,造成极大的浪费。这里介绍一个函数用于动态分配空间:malloc
如何使用malloc
原型
extern void *malloc(unsigned int num_bytes);
头文件
#include <stdlib.h>
#include <malloc.h>
声明
void *malloc(size_t size);
注意:这里的void*是指不确定的类型,即可以给各种类型的变量分配空间。
示例
int nSize;//要使用多大的空间
scanf("%d",&nSize);//获取要使用多大的空间//动态分配空间
int *k;
k = (int*)malloc(nSize);//分配nSize大小的空间给k
//...执行其他代码
free(k);//释放掉分配给k的空间
k = NULL;//清空
代码中之所以要在malloc前加上(int*)是因为malloc原本是void型的,要分配给一个int*型的变量,必须要进行类型转换。同样,malloc也可以分配空间给别的类型的变量,也要转换成适当类型。malloc分配的空间使用完后要清空然后用free(变量名)释放掉,否则占用的内存会越来越大。
如果申请失败
malloc也有申请空间失败的时候,那么就可以加个判断:
k = (int*)malloc(nSize);
if (k == NULL)//如果分配失败,因为如果分配成功了那k就有值。return 0;
注意
malloc 只会分配内存,不会对分配的内存进行初始化,所以分配到的内存的值是随机的。
如果分配的内存不是一个变量(如malloc(nSize))而是有一个具体的值,那么应该这么写:
k = (int*)malloc(sizeof(int) * 64);//64是要分配的空间,如果是分配给其他类型的变量,其中的sizeof的参数也要有所改变。
C语言如何动态分配空间:malloc相关推荐
- c语言之动态分配空间
void method_four(){int *p ;p = (int *) malloc(10*sizeof(int)); //申请动态int类型空间for(int i = 0 ;i < 5 ...
- C语言中动态分配空间的数组,可以使用sizeof求其字节数吗?
C语言中,动态分配的数组,应该注意其使用! 和一般数组名还是有很大区别的,如下: #include<stdio.h> #include<stdlib.h>int main(){ ...
- c语言 什么时候需要malloc动态分配内存?
转自https://www.cnblogs.com/tomato0906/articles/7711737.html 我讲解一下c语言中动态分配内存的函数,可能有些初学c语言的人不免要问了:我们为什么 ...
- c语言增加动态分配的存储空间吗,C语言 关于内存动态分配问题
全局变量:分配到 内存的静态区. 局部变量(非静态):分配到 内存的动态区.在存储区中称为栈(stack) 临时数据(C允许内存动态分配区域):存放在自由空间区,称为堆区(heap) 内存动态分配 得 ...
- C语言指针之二malloc的用法及详解
一.为什么c语言中要有malloc malloc就是memory allocate动态分配内存,malloc的出现时为了弥补静态内存分配的缺点,静态分配内存有如下缺点: 1.比如说,传统的一维数组,如 ...
- C语言-动态内存管理(malloc()、calloc()、realloc()、free())
C语言 动态内存分配 文章目录 C语言 动态内存分配 前言 一.为什么存在动态内存分配? 二.动态内存函数的介绍 1.初识malloc()和free() 2.malloc()和free()的简单使用 ...
- C语言数组初始化及malloc初始化
前言 做笔试题的时候老有些小错误,来总结一下. 数组赋值初始化的三个方式 1.{0} 初始化 例如: int nums[3] = {0}; 但是经常出现的是给定长度(变量)然后需要进行初始化,如果写成 ...
- C++数组动态分配空间国外玩家最关注的韩游
2012年10月06日游戏内经济体系崩溃,多人游戏体验将更完善,游戏名称末日战车(暂译)开发商netdevil类型科幻beta测试中运行平台pc末日战车是一款将车战与角色扮演元素融合在一起的多人在线游 ...
- 内核空间:kmalloc vmalloc 用户空间:malloc ptmalloc
一.地址映射流程 二.内核空间 在内核空间,通过malloc类似的两个系统调用来进行内存的分配,它们分别是kmalloc和vmalloc 1.kmalloc kmalloc用于为内核空间的直接内存映 ...
最新文章
- android 响应点击事件,Android响应事件onClick方法的五种实现方式小结
- Autodesk PowerInspect 2021中文版
- 如何在spring中读取properties配置文件里面的信息
- Java8 CountDownLatch 源码分析
- 读后感《我回阿里的29个月》
- http的302,303和307
- oracle安装过程掉电,Oracle数据库掉电后ORA-01172磁盘坏块解决方法
- cad 打开硬件加速卡_CAD卡顿?电脑带不动?几个简单实用的方法,解决CAD运行卡顿问题...
- 打擦边球,涨粉1700万!中国最“不正经”的官媒,比杜蕾斯还会玩
- From UI design to system functions and application layer
- 《python编程》第五章——并行系统工具(上)
- 1.1 echo rem cd dir命令
- 无线传感器网络中低功耗MAC协议—T-MAC
- java digester map_Tomcat7启动分析(三)Digester的使用(转载)
- java 百家姓_java判断姓是否合格 百家姓
- 华为官方翻新产品秒杀活动来袭,官方正品,7折优惠,真香!
- HC-SR501人体红外感应模块程序
- dataframe 离群值处理
- 处理.Dwg文件用哪种技术方案?ObjectARX,RealDWG还是Teigha(ODA)?
- 计算机助理职称考试成绩查询,初级成绩可以查询了!