关于malloc和free个人的一点理解

malloc和free是在动态分配内存空间和释放时用到的。使用malloc和free通常是在定义一些链表或者指针数组等动态结构会用到,而malloc时,操作系统也会做一些工作,主要是从空闲堆中分配一块空间,而且,这块空间还包括了该空间块大小等信息,以便释放时用到。这大概也是一个malloc对应一个free这句话的一层意思。

之前想到,如果我分配的空间现在不需要使用这么大,就像原字符串被截断了这种情况该怎么办呢?目前想到的只有重新分配一个新的空间,然后把需要保留的copy到这里,释放原空间,或者是不管原空间大小,只需要正确设置结束符即可。不知道c++string的resize是怎么实现的?有时间去看看。

(PS:链表就不需要考虑了,基本的实现都是对每个节点malloc一个空间,这样删除,修改等等操作的单位都是节点,只要保证正确释放和不出现野指针即可。)

下面是对于malloc和free讲的比较好的一篇中文博客:

http://www.cnblogs.com/hanyonglu/archive/2011/04/28/2031271.html

posted on 2013-01-07 13:56  小龙人2012  阅读(198)  评论(0编辑  收藏  举报

导航