代码之家  ›  专栏  ›  技术社区  ›  Falmarri

c语言中指针的实用用法++

  •  1
  • Falmarri  · 技术社区  · 14 年前

    我的C++编程经验大部分都是学校的项目。这样,我们对外部库(即boost)的使用要么被禁止,要么被劝阻。因此,我们不能使用智能指针,除非我们想编写自己的,这通常超出了项目的范围。我只是想知道在现实世界的项目中,有多少内存管理实际上是手动完成的?

    我想这是个模糊的问题。我只是想知道内存管理通常是如何在现实世界的项目中完成的。

    5 回复  |  直到 14 年前
        1
  •  6
  •   Vitor Py    14 年前

    在遗留代码上通常有很多手动内存管理。如果有人没有花时间重构它,你可以找到很多赤裸裸的新闻和删除,只是高兴地等待泄漏某处。

    我相信C++中最新的、编写良好的软件通常使用智能指针、RAII等等。手动内存管理容易出错。

        2
  •  3
  •   Thanatos    14 年前

    也就是说,在现实世界中,使用boost。使用第三方库。如果一个轮子在外面,不要重新发明它。你会更有效率,你会花更少的时间去写别人已经写过的代码。

        3
  •  2
  •   GManNickG    14 年前

    取决于你所说的“内存管理”是什么意思。

    显然,严格的定义意味着“所有的时间”,因为自动变量(堆栈分配)是内存的东西。你可能不是故意的。

    另一边是生的 new delete 从来没有发生过,但无论如何都可能发生在“普通”C++中。这是不好的做法,草率,很容易解决与容器。你可以从某个地方复制和粘贴一个智能指针实现,然后就可以完成了,没有任何借口。

    在中间,理想情况下所有的“管理”都是通过容器自动完成的。唯一需要做的管理就是打破循环依赖或创建自己的容器类。

    在我自己的项目中,我只使用 删除 新的 再一次。之后,我只使用 当它直接进入某个容器时。

        4
  •  0
  •   hookenz    14 年前

    也就是说,现在越来越多的程序员在他们的项目中使用boost和智能指针,我也看到一些代码被重构为使用boost::shared\u ptr

        5
  •  0
  •   Richard Wolf    14 年前

    还值得一提的是,shared\u ptr在2003年作为std::tr1::shared\u ptr进入标准库。或者至少,如果它不是正式的在图书馆,它是用我最近使用的所有C++编译器来运输的。