gpt4 book ai didi

c - 如何在我的代码中使用 Git 的 malloc 包装器?

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:30 25 4
gpt4 key购买 nike

我想在我的代码中使用 git 的 malloc 和 realloc 包装器来应对 OOM(内存不足)情况。这是它的代码:

void *xmalloc(size_t size)
{
void *ret = malloc(size);
if (!ret && !size)
ret = malloc(1);
if (!ret) {
release_pack_memory(size, -1);
ret = malloc(size);
if (!ret && !size)
ret = malloc(1);
if (!ret)
die("Out of memory, malloc failed");
}
#ifdef XMALLOC_POISON
memset(ret, 0xA5, size);
#endif
return ret;
}

但是release_pack_memory函数在sha1_file.c中头文件和这个函数引用了 Git 代码中其他头文件中的函数,我不想花太多精力将这个函数与 Git 的代码库隔离开来。目前我正在寻找 release_pack_memory 函数的替代函数,或者你能推荐我另一个替代函数吗?我将感谢任何形式的帮助

最佳答案

为什么要使用 Git 的 malloc 包装器?你明白它在做什么吗?如果是这样,为什么您认为您需要 release_pack_memory 的“替代品”?

所有这个包装器所做的*是,如果 malloc 失败,它会尝试释放一些用于缓存的内存(这就是 release_pack_memory 所做的)然后尝试再次。如果你没有任何内存缓存那么复制这个包装器真的没有意义(如果你确实有内存缓存,那么你应该已经知道如何从它释放内存而不需要复制此函数)。


* 它还包含在不支持 malloc(0) 的平台上检查 size 是否为 0,如果您担心这一点,那么 release_pack_memory东西还是没用。

关于c - 如何在我的代码中使用 Git 的 malloc 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com