- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个菱形层次结构,如下面的代码所示。
class A {
public:
A() {}
int a = 3;
virtual void aa() {}
};
class B : public virtual A {
public:
B() : A() {}
int b() { return 4; };
};
class C : public virtual A {
public:
C() : A() {}
};
class D : public B, public C {
protected:
int d = 45;
public:
D() : B(), C() {}
};
int main() {
std::unique_ptr<A> a = std::make_unique<D>();
}
a.release()
to main 解决了段错误。这是为什么?
最佳答案
这是因为 A 中没有虚拟 Dtor。没有 Dtor,您可以看到在使用 GDB 运行时对象销毁中发生了段错误:
eddy@eddy-VirtualBox:~/deleteme$ g++ -std=c++14 -O0 -g test.cpp
eddy@eddy-VirtualBox:~/deleteme$ gdb a.out
(gdb) run
Starting program: /home/eddy/deleteme/a.out
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76f2c01 in __GI___libc_free (mem=0x555555769e88) at malloc.c:3123
3123 malloc.c: No such file or directory.
(gdb) bt
#0 0x00007ffff76f2c01 in __GI___libc_free (mem=0x555555769e88) at malloc.c:3123
#1 0x0000555555554f6d in std::default_delete<A>::operator() (this=0x7fffffffddd8, __ptr=0x555555769e88) at /usr/include/c++/7/bits/unique_ptr.h:78
#2 0x0000555555554e07 in std::unique_ptr<A, std::default_delete<A> >::~unique_ptr (this=0x7fffffffddd8, __in_chrg=<optimized out>)
at /usr/include/c++/7/bits/unique_ptr.h:268
#3 0x0000555555554b68 in main () at test.cpp:33
public:
A() {}
int a = 3;
virtual void aa() {}
virtual ~A() = default;
};
关于c++ - 钻石物体的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60950126/
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有几个 div,我想将它们旋转成菱形,但我不希望它们的背景图像旋转,我该如何实现?这是我现在的代码 dj-1-overlay.png" /> 和我的 CSS: #diamonds div { -
我正在制作 Canvas 动画,其中一个图像应该是钻石。 现在,我做到了这一点: ctx[0].beginPath(); ctx[0].moveTo(0,-80); ctx[0].lineTo(-60
考虑以下几点: #include #include using namespace std; class A { public: A(const char* sName) //convers
以某种方式检测 charuco 钻石对我来说不适用于更大的图像。使用我的 1920x1080 原始图像,它既不能可靠地识别 id(菱形 id 元素每次都在切换位置)。在第一张图片中,您可以看到它识别出
下面的代码是关于菱形继承(钻石问题)的。虚拟继承解决了这种歧义。 #include using namespace std; class A { public: voi
我目前正在开发 2D 等距 map 编辑器。我显示包含点和纹理的实体(立方体,播放器)。每个立方体由12个点组成。(12个点,但在sfml(sf::VertexArray)显示时作为4个点的3条边处理
如何在 iOS 的 openframeworks 中构建 3d 钻石?我很难在 openframeworks 中找到有用的 3d 渲染教程,我来自 Processing。 最佳答案 我认为这个故事有两
我是一名优秀的程序员,十分优秀!