C内存分配

今天就很简单地写下C的内存分配问题

理想化的情况下,C的内存分配有3部分

分别是静态变量的内存,自动变量的内存,动态分配的内存

静态变量内存

在程序编译的时候知道的内存数量,这些数据在整个程序运行的时间都是可用的,lifetime是整个运行周期

自动变量的内存

进入代码块的变量定义的地方,为变量分配内存,代码块结束的时候,自动把内存释放了。lifetime是代码块内部

动态分配的内存

这个内存是需要调用函数分配的

分配函数是malloc(),释放分配的函数是free()

malloc

int *p;
p=(int *)malloc(n*sizeof(int));

参数是个数量,表示字节的大小。

返回值是地址

可以类比数组,返回值是数组第一个元素,p[1] 表示第二个元素

但是malloc 返回的是void类型,需要强制转换成指针,所以需要强制转化类型(int *);

free

用来释放malloc分配的内存,这个很重要

不释放内存会造成内存溢出,也就是内存用完了。

举个栗子,

int x[2000];
for(int i=0;i<1000;i++){
    int *p=(int *)malloc(n*sizeof(int));
  //free(p) 若注释掉这句

}

上面的代码每一次循环都没有把内存释放掉,会最终造成内存溢出的。

 

上面是我对C内存分配很肤浅的认识,有错误之处,多多指教  EOF

 

转载于:https://www.cnblogs.com/wz0107/p/5346461.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值