黑马程序员技术交流社区
标题:
关于内存分配
[打印本页]
作者:
初见兔儿哥
时间:
2015-8-3 21:41
标题:
关于内存分配
内存分配函数三:
void* malloc( n*sizeof([数据类型]) );
void* calloc( 空间块数 , sizeof[数据类型] );
void* realloc( void* ptr, n*sizeof([数据类型])); ps:在stdlib.h函数库内,要先引用
malloc
功能:分配长度为num字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
callo
功能:为具有num个长度size元素的数组分配内存
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
realloc
功能:改变num所指内存区域的大小为newsize长度。
说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
当内存不再使用时,应使用free()函数将内存块释放。
ps:先检测被扩充空间往下的内存空间是否已被使用:如果未被使用,直接进行扩充;否则,重新在空闲的地方定义一个newsize的空间。
区别:
1、calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据
2、realloc是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度
另:memset
标准:memset( [需初始化的空间] , [要设置的字符] , [存储空间长度] )
如: memset( p, 'a',16)
即:将内存空间中所有存储空间赋值 ‘a’。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2