2 内存分配
C语言的标准内存分配函数:malloc,calloc,realloc,free等。
区别:
malloc与calloc的区别为1个size与n个size大小内存的区别:
使用方式
malloc调用形式为(类型 ) malloc(size):在内存的动态存储区中分配一块长度为“size”字节的连
续区域,返回该区域的首地址。
calloc调用形式为(类型 ) calloc(n,size):在内存的动态存储区中分配n块长度为“size”字节的连
续区域,返回首地址。
realloc调用形式为(类型) realloc(*ptr,size):将ptr内存大小增大到size。
free的调用形式为(类型) free(void *ptr):释放ptr所指向的一块内存空间。
2.1.1 共同点就是:
都为了分配存储空间,
它们返回的是 void * 类型,也就是说如果我们要为int或者其他类型的数据分配空间必须显式强制
转换;
2.1.2 不同点是:
malloc一个形参,因此如果是数组,必须由我们计算需要的字节总数作为形参传递
用malloc只分配空间不初始化,也就是依然保留着这段内存里的数据,
calloc 2个形参 ,因此如果是数组,需要传递个数和数据类型
而calloc则进行了初始化,calloc分配的空间全部初始化为0,这样就避免了可能的一些数据错误。
3 内存管理机制
内存资源是非常有限的。尤其对于移动端开发者来说,硬件资源的限制使得其在程序设计中首要考虑的
问题就是如何有效地管理内存资源。本文是作者在学习C语言内存管理的过程中做的一个总结。
3.1 变量概念:
全局变量(外部变量):出现在代码块{}之外的变量就是全局变量。
局部变量(自动变量):一般情况下,代码块{}内部定义的变量就是自动变量,也可使用auto显示
定义。
静态变量:是指内存位置在程序执行期间一直不改变的变量,用关键字static修饰。
代码块内部的静态变量只能被这个代码块内部访问,代码块外部的静态变量只能被定义这个变量的
文件访问。
3.1.2 extern关键字:
1、引用同一个文件中的变量;
2、引用另一个文件中的变量;
3、引用另一个文件中的函数。
注意:C语言中函数默认都是全局的,可以使用static关键字将函数声明为静态函数(只能被定义这个函
数的文件访问的函数)。
评论0
最新资源