动态内存分配
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)内存泄漏:分配内存但是在使用完毕后不释放,内存泄漏将一点点的榨干可使用的内存。
阅读(745) | 评论(0) | 转发(0) |