c内存管理学习总结
2017-09-04 20:03
169 查看
1.c中分配内存有malloc()和calloc()函数,它们返回一个地址指针,
malloc()函数使用如下:
calloc()函数使用如下:
calloc()函数还有一个特性,它将块中的全部位都置为0;
如果在程序结尾不使用free()那么在最后,自动变量消失,分配内存仍然存在,地址不见了,便不能再使用;虽然在这个程序结束后,系统会自动释放内存,但这个弊端是存在程序运行之中,所以应该培养程序结尾用free()的好习惯;
2.类型限定词const和volatile
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声明意味着每次都需要从内存中读取。
相关文章推荐
- Java基础学习总结(64)——Java内存管理
- imooc 学习总结——离港篇:C++内存管理
- 关于内存管理思考方式的一些学习总结
- [黑马程序员]14[OC语言]OC内存管理部分学习笔记总结
- 内存管理学习总结
- Java基础学习总结(64)——Java内存管理
- JVM内存管理学习总结(一)
- jvm关于内存管理和垃圾回收的学习总结
- Objective-c内存管理学习总结
- 黑马程序员之ios学习总结——11 OC语言的内存管理1
- 黑马程序员_IOS内存管理学习总结(一)
- jvm关于内存管理和垃圾回收的学习总结
- jvm关于内存管理和垃圾回收的学习总结
- iOS学习之block总结及block内存管理(必看)
- jvm关于内存管理和垃圾回收的学习总结
- 内存管理学习总结
- Lua学习总结——内存管理
- JVM内存管理学习总结(一)
- jvm关于内存管理和垃圾回收的学习总结
- JVM学习总结--体系结构、内存管理和垃圾回收