TinySTL
TinySTL copied to clipboard
分配器问题
Alloc.cpp 的103行开始对malloc分配失败的分支进行处理,遍历所有已有的free obj查看有无可用的free obj,其中for循环应该从i等于bytes开始,因为小于bytes的obj肯定不能满足,然后如果都没有可用的链表,tinystl依然默认其分配成功,并且最后将heap_size加上bytes_to_get和调用chunk_alloc可能导致无限调用
确实有这个问题,alloc::chunk_alloc函数中
for (int i = 0; i <= EMaxBytes::MAXBYTES; i += EAlign::ALIGN)
这一行应该改为:
for (int i = bytes; i <= EMaxBytes::MAXBYTES; i += EAlign::ALIGN)
@zouxiaohang
我也发现这个问题了
对的,如果所有free obj都不可用。应该尝试out of memory机制。
邹晓航已经收到了你发送的邮件~~