【问题标题】:Alternative for malloc_trim(0)malloc_trim(0) 的替代方案
【发布时间】:2020-09-23 00:00:25
【问题描述】:

我使用 Malloc 分配内存。使用后我使用 delete 来释放内存。要将此内存释放给操作系统,我使用 malloc_trim(0)。但是不推荐使用 Malloc_trim (0)。所以我想知道 malloc_trim(0) 是否还有其他选择。顺便说一下语言是cpp

【问题讨论】:

  • 我使用 Malloc 分配内存。使用后我使用 delete 释放内存。 仅供参考:malloc()calloc() 分配的内存必须由free()。由new 分配的内存必须由delete 释放(new[] 分别由delete[])混合malloc()deleteUndefined Behavior(即使它似乎工作)。
  • “我使用 Malloc 分配内存。使用后我使用 delete 来释放内存。” - 我希望你使用free(),而不是delete。为什么你甚至在 C++ 中使用这些函数?我想另一种方法是使用 C 中的内存管理功能,或者在现代 C++ 中,尽可能避免手动内存管理。
  • 它真的被弃用了吗?你在哪里读到的?

标签: c++ memory memory-management


【解决方案1】:

我相信您可以使用free() 关键字代替malloc_trim(0)。我认为使用malloc() 已经很老了,因为现代它使用new 作为替代品。如果你使用new关键字,你可以使用delete关键字从堆中释放内存。

【讨论】:

  • 不,free() 是别的东西。请参阅man page
  • newdeletemalloc()free() 完全不同。前者不仅仅是后者的替代品。您可能有理由使用malloc() 而不是new
【解决方案2】:

忽略malloc/delete 的混淆,调用malloc_trim 的替代方法只是 调用malloc_trim。它已被弃用,因为它现在毫无意义。

【讨论】:

    猜你喜欢
    • 2013-12-22
    • 1970-01-01
    • 2015-06-13
    • 2015-03-03
    • 2015-09-25
    • 2019-12-16
    • 2011-06-20
    • 2015-11-03
    • 2014-04-03
    相关资源
    最近更新 更多