c++ - 关于 C++ 中的内存,我需要了解什么?

标签 c++ memory-management pointers reference

我一直在尽我最大的努力学习 C++,但我之前的培训在一个主要问题上存在不足:内存管理。我的主要语言都具有自动垃圾收集功能,因此从未真正需要跟踪所有内容。我曾尝试在线阅读 C++ 中的内存管理,但我怀疑我仍然遗漏了一些东西。

所以,这是一个多部分的问题:

  • 关于内存管理,我需要了解的最低限度是什么? (或者,我在哪里可以找到)?
  • 我在哪里可以获得中级和高级知识/教程/等(一旦我完成了基础知识)?

  • 更具体地说:
  • 指针和引用之间的性能差异是什么?
  • 我听说在循环中,您需要确保在任何地方调用 delete循环重新迭代之前的新指针。这个对吗?您需要对引用做些什么吗?
  • 有哪些经典的内存泄漏示例?
  • 我需要了解以下哪些内容(以及我是否真的需要使用他们——如果是这样,在哪里?):
    • malloc
    • free
    • calloc
    • realloc

**************************** 更新 *******************

这是为了解决评论一中对 lmgtfy 的引用(由 Ewan 撰写)。如果您开始阅读那里可用的信息,它对初学者没有用处。我认为这是一个很棒的理论,但它对这个问题既不相关也不有用。

最佳答案

你真的,真的需要读一本好书——坦率地说,没有一本是不可能学习 C++ 的。我推荐Accelerated C++ , 由两位 C++ 创始人 Koenig & Moo 撰写。

关于c++ - 关于 C++ 中的内存,我需要了解什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907668/

相关文章:

pointers - 为什么带有指针接收器的方法在接收到值时仍然有效?

c++ - 将类作为参数传递,但仍使用点运算符?

c++ - 如何在使用 QQmlApplicationEngine 时从 C++ 访问我的 Window 对象属性?

c++ - 代码退出时出现奇怪的访问冲突

c++ - 过度分配新/删除

java - Java 中的 char** 等价物

从 C++ 使用时,Python 多处理不起作用

java - 一种在 Spring 应用程序中创建和销毁 Prototype-beans 期间跟踪内存情况的方法?

iphone - ARC 是否在任何自定义 -dealloc 代码之前或之后在 -dealloc 中插入代码?

c++ - 如何在 C++ 中动态声明一个指向整数的指针数组?