聊一聊C语言变量的含义

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

我们知道每一个程序的运行都需要内存,那么C语言的变量的定义是什么含义呢?

假如我花了200元买了一块4G内存条,然后我定义了一个int a ;就意味着从这4G的内存上要拿走4个字节,又定义了一个int b;那么b同样也要从4G的内存条上拿走4字节。这就是C语言变量的一般含义,每一个变量实质上都会从你刚买的4G内存条拿走一部分空间。

每一个变量在内存条上拿空间有两种方式,一种是程序运行前编译系统事先给我们安排内存空间,另外一种是程序运行时,开发者自己向操作系统申请内存空间。

 

第一种方式比较简单,开发者基本不用关心任何问题,也是大家平时使用最多的一种方式,比如:

int a;

double b;

char c;

char name[10];

 

而第二种方式初学者平时用的较少,程序运行之后,我们还可以为变量申请内存空间?

这个时候我们需要使用malloc函数,比如我们想要一块int空间用来存放a变量。

int *p_a = (int *)malloc(sizeof(int));

 

大家发现这种方式和上面的直接定义一个int a;要麻烦很多。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的用法。


更多精彩文章:

 where2go 团队


   

微信号:算法与编程之美

640?wx_fmt=jpeg

长按识别二维码关注我们!

温馨提示:点击页面右下角“写留言”发表评论,期待您的参与!期待您的转发!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

算法与编程之美

欢迎关注『算法与编程之美』

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值