【发布时间】:2015-01-24 14:19:51
【问题描述】:
如果我编写了一个 ANSI C 代码,并且我使用 new 和 delete 运算符进行动态内存管理。 使用它有什么缺点吗?
extern "C" void allocateString(char **str, int size) {
*str = new char[size];
}
这只是一个示例代码。
【问题讨论】:
-
最重要的缺点是
new不在C语言中。 -
C 中的新功能 :-)
-
@Klaus: en.wikipedia.org/wiki/… :-)
-
这是一个 C++ 函数,使用“C”外部链接导出 - 不是 ANSI C 代码。缺点是您必须在调用代码中解除分配 str (或有内存泄漏),除非您提供相应的
deallocateStringAPI,否则客户端代码将不得不猜测它应该使用delete[] *str才能正确执行此操作。这是糟糕的 C++ API 设计。 -
从问题中删除了 C 和 ANSI 标签。
标签: c++ memory-management