您的位置:首页 > 编程语言 > C语言/C++

c内存管理学习总结

2017-09-04 20:03 169 查看
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声明意味着每次都需要从内存中读取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 内存管理