double free问题
参考:http://0xffffff.org/2017/01/22/39-multi-thread-memory-bug/
理解:在malloc(2)申请内存的时候,其实分配的内存要比实际的要大一点,在返回给用户代码指针的前面有一个固定大小的结构,放置着该快内存的长度,
属性和数据结构,你在free(ptr)的时候,并没有传入指针的长度,因为内存的长度已经记录在指针前面的数据结构中,那么在这个结构中只要放置一个校验
的字段标识出未分配,已分配还是已经释放。free(ptr)只要检查这个字段就可以识别出是否是double free了

浙公网安备 33010602011771号