Chinaunix首页 | 论坛 | 博客
  • 博客访问: 341769
  • 博文数量: 56
  • 博客积分: 2058
  • 博客等级: 中尉
  • 技术积分: 688
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-11 09:19
个人简介

code rush

文章分类

全部博文(56)

文章存档

2012年(2)

2011年(54)

分类: C/C++

2011-08-04 13:52:07

  1. malloc
  2.     函数原型: extern void *malloc(unsigned int num_bytes);
  3.     函数描述: 分配长度为num_bytes字节的内存块
  4.     入口参数: num_bytes 内存块的大小(单位为字节)
  5.     出口参数: 无(或为空)
  6.     返回值: 如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
  7.     函数说明 不再使用时一定要记得释放,调用函数free

  8. 使用示例:
  9.   char *pTemp = NULL;
  10.   pTemp = (char *)malloc(10 * sizeof(char));

  11. [1]申请空间大小时,利用sizeof做出计算,这样保证会分配正确数量的内存空间;
  12. [2]malloc返回的内存是没有被初始化的,所以可能包含着任何的随机垃圾,应该在其后马上调用memset函数进行初始化为0的操作;

  13.  
  14. calloc
  15.     函数原型: void *calloc(size_t nelem, size_t elsize);
  16.     函数描述: 分配指定长度的内存空间
  17.     入口参数: nelem 元素的个数(如为10个char申请空间,则为10)
  18.          elsize 元素所占用的字节(如为char申请,则为sizeof(char)
  19.     出口参数: 无(或为空)
  20.     返回值: 如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。
  21.     函数说明 不再使用时一定要记得释放,调用函数free

  22. 使用示例:
  23. char *str = NULL;
  24. str = calloc(10, sizeof(char));

  25. [1]calloc实际上也只能算作是malloc的一种简单的封装;
  26. [2]它会自动的把动态分配的内存进行清0操作,并且保证了分配数量的正确,所以建议使用。
  27.  
  28. 其他说明:
  29. 进程对动态内存的分配请求被认为是不紧迫的。例如,当进程的可执行文件被装入时,进程并不一定立即对所有的代码进行访问。
  30. 类似地,当进程调用malloc() 请求动态内存时,并不意味着进程很快就会访问所有获得的内存。
  31. 因此一般来说,内核总是尽量推迟给用户态进程动态分配内存。
阅读(2018) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~