1.C++风格的动态分配是否支持Linux系统调用?
由于 C++ 使用 new/delete,在手册页中,linux 系统调用使用 C 风格的动态分配。我们可以互换使用它们还是限制将 C++ 风格的动态变量传递给 C 风格的动态变量?或者只要保持一致,就可以了?
new
并且delete
不能安全地与和malloc
混合。但是,C++ 本身可以使用,和,有时很好,但是对于正确的“对象”,它只会让你到目前为止:许多现有的 C++ 库代码硬编码使用and并且你需要处理“放置新”和自己破坏物体。您可以探索根据 and 定义您自己的和运算符- 我从未见过它完成过。典型的 C 堆函数可能针对较大的平均分配大小进行了优化,而 C++ 可能涉及大量小请求,因此可能存在性能和内存包效率方面的考虑......realloc
free
malloc
realloc
free
new
delete
new
delete
malloc
free
我希望以良好的编码风格回答(例如易于维护,易于调试)
为了可维护性和一致性,C++ 程序倾向于最小化或消除对malloc
等的使用。
2.另外,这个问题更侧重于如何使用C++开发Linux系统相关的工作?
我是否只在需要时使用 C,否则我只是将 C++ 用于我的主要工作?或者有更好的方法来做到这一点?
C++ 几乎是 C 的超集,具有一些非常好的特性,可用于编写大型、可维护和高效的程序。如果您知道如何使用它,恕我直言,您应该默认使用它。当您需要更多的可移植性,或者想要与您不能信任的其他人一起工作以明智地使用 C++ 时,请使用 C!(我是认真地说的。)
3.在头文件中,比如说glob.h,在C++程序中,我们应该只#include还是有其他方式?
是的...但是您可能希望extern "C" {
在上一行和}
下一行将其括起来以抑制 C++ 符号名称重整。