Skip to content

关于void* MemoryPoolAlloc(MemoryPool* mp, mem_size_t wantsize)部分的逻辑疑问 #14

@Zhichao-Yan

Description

@Zhichao-Yan
  1. 请问:mp->mempool_size代表的什么意思?是默认的一个标准内存池大小吗?
  2. 剩余可新增内存池大小不是应该等于mp->max_mempool_size - mp->alloc_mempool_size吗?
    if (mp->auto_extend) {
        // 超过总内存限制
        if (mp->alloc_mempool_size + total_needed_size > mp->max_mempool_size) {
            goto err_out;
        }
        // 问题1: 
        mem_size_t add_mem_sz = mp->max_mempool_size - mp->mempool_size;
        // 如果空间足够则按 mempool_size 新增, 不足则分配剩下所有内存
        add_mem_sz = add_mem_sz >= mp->mempool_size ? mp->mempool_size
                                                     : add_mem_sz;
        if (!extend_memory_list(mp, add_mem_sz)) goto err_out;
        // 更新实际分配内存
        mp->alloc_mempool_size += add_mem_sz;

        goto FIND_FREE_CHUNK;
    }

Metadata

Metadata

Assignees

No one assigned

    Labels

    wontfixThis will not be worked on

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions