如何在C语言中处理内存是最佳实践?
没有类可以为我处理构造函数/析构函数。
- 在函数开头分配内存还是使用一个为我创建它的函数好?如何释放它们?
- 这些是广泛的问题,不同情况下可能有所不同,但您如何处理它们?
- 您能给出什么提示和经验教训吗?
我认为我掌握了如何在C++中处理内存,但在C中处理内存是不同的,我有点脱节。
在C++中,我有构造函数和析构函数,我有相当简单的new和delete,并且我知道如何使用RAII、智能指针和类来封装它。
然而,在C中,我无法以同样的方式处理malloc和free。我不知道如何隐藏它们以及如何自动化事情。我唯一能想到的就是使用函数来初始化和销毁我的指针。但是我应该如何构建我的内存处理呢?
在写这篇文章时,我意识到这更多是关于我理解C流程而不是其他任何事情的问题,但是一次只问一个问题。
编辑:感谢您的回答,但我需要重新表达自己。
当我说我在C++中使用RAII和智能指针时,我不想在C中使用相同的方法,我知道它们不一样。但是我如何处理C++中的内存分配与这些技术有关。
例如,在我的类中,我动态添加和销毁类使用的内存。这样,我可以实现一种封装,我不需要知道类如何处理其内存,它只是处理它。这意味着我可以“隐藏”更低级别的内存处理,并只专注于几个“较大”的类。