这里有人在文件范围内写了以下内容:
std::auto_ptr<ClassWithDestructor> an_auto_ptr;
他们打算添加static
但忽略了它。
然后,两个不同的 linux 共享库,每个都包含包含此声明的 .o,最终链接到一个可执行文件。
该auto_ptr::~auto_ptr
项目运行了两次,结果很不幸。
这是已定义的行为、未定义的行为还是 gcc+ld 错误?
这里有人在文件范围内写了以下内容:
std::auto_ptr<ClassWithDestructor> an_auto_ptr;
他们打算添加static
但忽略了它。
然后,两个不同的 linux 共享库,每个都包含包含此声明的 .o,最终链接到一个可执行文件。
该auto_ptr::~auto_ptr
项目运行了两次,结果很不幸。
这是已定义的行为、未定义的行为还是 gcc+ld 错误?