Chinaunix首页 | 论坛 | 博客
  • 博客访问: 383838
  • 博文数量: 55
  • 博客积分: 1907
  • 博客等级: 上尉
  • 技术积分: 869
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 19:30
文章分类

全部博文(55)

文章存档

2011年(32)

2010年(23)

分类: C/C++

2010-11-28 18:45:36

1、malloc,calloc,realloc,free, 这几个函数均在头文件stdlib.h中定义。
2、原型如下:
   void *malloc( size_t size );
   void free( void *pointer );
   void *calloc( size_t num_elements, size_t element_size );
   void realloc( void *ptr, size_t new_size );
3、功能
   malloc向内存池请求一块大小为size字节的内存,如果请求成功则返回
一个指向该内存的指针,指针的类型为(void *),并且新分配的内存并未以
任何的值进行初始化.如果内存池的大小不够则向操作系统请求更多的内存,
并在这块新的内存上执行分配任务。如果操作系统无法提供更多的内存,
malloc则返回一个NULL指针。因此在使用malloc函数时应该对返回的指针进
行检查,确保内存分配成功,确保返回的不是NULL指针。
   free函数是释放一块动态分配的内存。它的参数来自malloc,calloc,realloc
返回的指针。它不允许释放一块内存的一部分。
   calloc基本的功能跟malloc相似,但是calloc分配的内存在返回之前已经
初始化为0了。
   realloc是扩大或者缩小一块动态内存。如果是扩大的话就在原来内存的后面
增加一块新的内存,原来内存的大小和值都不变,也有可能是新开辟一块新的内存
并且将原来内存中的值复制到新开辟的内存中;如果是缩小一块内存的话,则在原
来内存的末尾截掉目标大小,剩下内存中的值跟原来一样。
4、在使用这些库函数进行动态内存分配时,一定要检查返回的指针是否为NULL指针。
2010-11-28
阅读(2068) | 评论(1) | 转发(0) |
0

上一篇:没有了

下一篇:动态内存分配之11.1

给主人留下些什么吧!~~

chinaunix网友2010-11-30 10:41:21

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com