聊一聊C语言变量
作者:justin_cn 发布时间:[ 2017/3/14 16:10:16 ] 推荐标签:测试开发技术 C语言
我们知道每一个程序的运行都需要内存,那么C语言的变量的定义是什么含义呢?
假如我花了200元买了一块4G内存条,然后我定义了一个inta ;意味着从这4G的内存上要拿走4个字节,又定义了一个intb;那么b同样也要从4G的内存条上拿走4字节。这是C语言变量的一般含义,每一个变量实质上都会从你刚买的4G内存条拿走一部分空间。
每一个变量在内存条上拿空间有两种方式,一种是程序运行前编译系统事先给我们安排内存空间,另外一种是程序运行时,我们开发者自己向操作系统申请内存空间。
第一种方式比较简单,开发者基本不用关心任何问题,也是大家平时使用多的一种方式,比如:
int a;
double b;
char c;
char name[10];
而第二种方式初学者平时用的较少,程序运行之后,我们还可以为变量申请内存空间?
这个时候我们需要使用malloc函数,比如我们想要一块int空间用来存放a变量。
int *p_a = (int *)malloc(sizeof(int));
大家发现这种方式和上面的直接定义一个inta;要麻烦很多。malloc是内存申请函数,它只有一个参数,那是你要申请的内存空间的大小。
这里面的sizeof函数是计算特定数据类型的大小。sizeof(int)会得到我们这台机器上int的大小。
那么可能有同学会产生这样的疑问,我直接定义一个inta 不好了吗,为什么要这么麻烦呢?还要使用malloc函数,不是多此一举吗。关于这个问题,我们在后面的文章会给大家做进一步的介绍。
第二种方式可能会产生一些问题:
1)如果我不停的从4G内存条拿空间,一直不停的拿,那么可想而知,总有你会拿走所有的4G内存空间,从而使得程序没有任何的内存可用。这告诉我们一个道理,在我们从4G内存条拿走空间用完之后,一定要记得归还空间,否则系统会因为空间不足而崩溃。那么我们自己申请从4G内存条拿空间其实是malloc,而free是归还,因此malloc和free在使用的时候是一对,拿完空间一定要记得归还,这是一种的品质。
int *p_a = (int*)malloc(sizeof(int)); //申请内存
。。。
free(p_a); // 用完之后需要归还
2)因为是程序运行的时候,由开发者向操作系统申请空间,那么会存在这样的一种情况,假如系统现在只有100MB的剩余空间了,而你要申请200MB,那么结果是你的申请无法得到满足。所以你在使用malloc申请内存的时候,千万不要着急立马使用它,如果你申请的内存没有得到满足马上使用它的话,你的程序会报错。
以上是给大家介绍的C语言变量的含义,希望大家重点掌握malloc和free的用法。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11