wcsdup等函数会隐式调用 malloc 为目标缓冲区分配内存。我想知道由于内存分配不是很明确,所以明确释放存储似乎合乎逻辑吗?这更像是一个设计困境,支持和反对的原因如下
应该被释放,因为
- 不释放它会导致内存泄漏。
- 有据可查的是,wcsdup/_wcsdup 调用 malloc 来分配内存,即使它是从 C++ 程序调用的。
不应该被释放,因为
- wcsdup 积累的内存最终会在程序退出时被释放。在整个程序生命周期中,我们总是会遇到一些内存泄漏(除非我们大量调用 wcsdup 以获得较大的缓冲区大小)。
- 这可能会令人困惑,因为 free 之前没有显式的 malloc。
- 由于它不是标准的一部分但符合 posix,Microsoft 实现可能不会使用 malloc 来分配目标缓冲区。
应该采取什么方法?