小编Jid*_*doo的帖子

RAII与垃圾收集器

我最近在CppCon 2016上观看了Herb Sutter关于"Leak Free C++ ..."的精彩演讲,他谈到了使用智能指针实现RAII(资源获取是初始化) - 概念以及它们如何解决大多数内存泄漏问题.

现在我在想.如果我严格遵循RAII规则,这似乎是一件好事,为什么这与C++中的垃圾收集器有什么不同呢?我知道使用RAII,程序员可以完全控制何时再次释放资源,但是在任何情况下都只对垃圾收集器有益吗?它的效率真​​的会降低吗?我甚至听说有一个垃圾收集器可以更高效,因为它可以一次释放更大的内存块,而不是在代码中释放小内存块.

c++ garbage-collection memory-leaks smart-pointers

74
推荐指数
9
解决办法
8577
查看次数

为什么要找到最大切割 NP-hard?

我最近发现在带有加权边的图中找到最大割是 NP 难的。然而,找到最小割并不是 NP 难的。如果我将所有边上的权重求逆,然后搜索最小割,那不会给我原始图上的最大割吗?如果不是,为什么?

algorithm graph graph-algorithm

4
推荐指数
2
解决办法
1219
查看次数

为什么在 C++ 中可以在头文件中定义成员函数而不是自由函数?

比方说,我有三个文件A.cppB.cppB.hA.cpp并且B.cpp都包括B.h. 我在B.h(无论出于何种原因)定义了一个自由函数。然后我收到链接器错误:

ld:架构 x86_64 的 1 个重复符号

这是有道理的。编译器分别编译A.cpp和编译B.cpp,所以有两个同名同参数的函数。

但是,如果我在该类中声明一个类B.h并在该类中定义一个成员函数,则它编译得很好。这是为什么?这不应该创建相同的链接器错误吗?

c++

3
推荐指数
1
解决办法
80
查看次数