c++ - new 分配的 free() 内存安全吗?

标签 c++ memory-management

<分区>

我正在开发一个 C++ 库,其中一个函数返回一个(新分配的)指向 double 组的指针。 API 声明调用者有责任释放内存。

但是,该 C++ 库过去是在 C 中实现的,并且所讨论的函数使用 malloc() 分配内存。它还假定调用者将使用 free() 释放该内存。

我能否安全地将对 malloc() 的调用替换为对 new 的调用?如果我这样做,现有的客户端代码(使用 free() 会中断吗?到目前为止我能找到的是 free() 的官方文档,其中指出

If ptr does not point to a block of memory allocated with [malloc, calloc or realloc], it causes undefined behavior.

但我相信这是在 C++ 及其自己的分配运算符出现之前编写的。

最佳答案

您必须将对 malloc 的调用与 free 和对 new 的调用与 delete 相匹配。混合/匹配它们不是一种选择。

关于c++ - new 分配的 free() 内存安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22406278/

相关文章:

c++ - 查找 boolean 矩阵的秩

c++ - 如何正确截断整数类型

python - Python中的变量存放在哪里?

带指针参数的 C++ 函数

c++ - 临时变量被重载的 + 和 += 运算符破坏

c++ - 从 node.js 调用 C 代码

c++ - 是什么导致 IWICBitmapFrameEncode::SetPixelFormat 返回与请求格式不同的格式?

iOS - 内存分配 - 使用相同的变量构建数组

android - 在 Android 中缓存文件时的最佳实践

python - InMemoryUploadedFile 真的是 "in memory"吗?