c内存管理学习总结

1.c中分配内存有malloc()和calloc()函数,它们返回一个地址指针,

malloc()函数使用如下:

double *ptd;
ptd = (double *) malloc (30 * sizeof(double));
这段代码请求30个double类型值的空间,并把ptd指向该空间所在位置。

calloc()函数使用如下:

long * newmem;
newmem = (long *) calloc (100,sizeof(long));
在程序的结尾需要使用free()函数来释放内存:
free(ptd);

calloc()函数还有一个特性,它将块中的全部位都置为0;

如果在程序结尾不使用free()那么在最后,自动变量消失,分配内存仍然存在,地址不见了,便不能再使用;虽然在这个程序结束后,系统会自动释放内存,但这个弊端是存在程序运行之中,所以应该培养程序结尾用free()的好习惯;

2.类型限定词const和volatile

const float * pf; //pf指向的值不能被改变,pf本身是可以被改变的
float * const pt; //pt指向的值可以被改变,pt本身地址不能别改变
限定词volatile告诉编译器该变量除了可以被程序改变以外还可以被其他代理改变。

volatile int locl; //locl是一个易变的位置
例如:
val1 = x;
val2 = x;
一个聪明的优化器会注意到x的值没有发生改变,它把x临时存储在一个寄存器中,接着从寄存器而非初始内存位置读取该值以节省时间。这个过程被称为缓存。volatile声明意味着每次都需要从内存中读取。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值