Chinaunix首页 | 论坛 | 博客
  • 博客访问: 229287
  • 博文数量: 108
  • 博客积分: 3092
  • 博客等级: 中校
  • 技术积分: 1172
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-25 16:35
文章分类

全部博文(108)

文章存档

2011年(3)

2010年(43)

2009年(19)

2008年(43)

我的朋友

分类: C/C++

2008-12-31 16:24:45

动态内存分配
 
1.malloc和free
malloc从内存池中提取内存并且不做任何初始化,参数是需要分配的内存字节数,malloc分配的是一块连续的内存,如果分配失败将返回null指针,成功则返回一个void*类型的指针。
 
2.calloc和realloc
calloc和malloc的区别是,在返回指向内存的指针之前把它初始化为0,并且参数包括所需元素的数量和每个元素的字节数。
realloc用于修改一个原先已分配的内存的大小,如果原来的内存块无法改变大小,realloc将分配另一块正确大小的内存,所以使用realloc后就不能在使用就内存的指针了,而应该使用返回的新指针。
 
3.sizeof
多使用sizeof可以提高程序的可移植性。
 
4.常见错误
(1)分配内存后不检查是否成功从而导致对null指针的解引用。
(2)操作内存时超过了分配内存的边界。
(3)释放内存的一部分是不允许的。
(4)使用已经被free释放的内存。一个典型的情况是:对一个指向动态分配的内存的指针进行了复制,而且这些拷贝散布于程序各处,当你使用指针1将内存释放后无意的使用指针2再次访问。
(5)内存泄漏:分配内存但是在使用完毕后不释放,内存泄漏将一点点的榨干可使用的内存。
 
阅读(708) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~