C++ 为什么?QObject销毁不';不要因为跨DLL边界传递CRT对象而受到影响

C++ 为什么?QObject销毁不';不要因为跨DLL边界传递CRT对象而受到影响,c++,dll,C++,Dll,根据c++标准,由模块(dll)创建的对象必须在同一模块中删除,如果我们将对象传递到dll边界,则会损坏堆。(如以下链接中所述) 现在在我的应用程序中,如果我创建父对象(QObject或其子类)和几个子对象(子对象表示QObject树),最后在应用程序结束时,我删除一个父对象(在exe中),dll将删除所有子对象 那么为什么它没有任何问题呢?C++标准没有“DLL”或“模块”的概念.QT模块默认情况下是使用/MD构建的,这是一个可以避免此问题的编译器选项。请注意,链接的文章已经过时,Micros

根据c++标准,由模块(dll)创建的对象必须在同一模块中删除,如果我们将对象传递到dll边界,则会损坏堆。(如以下链接中所述)

现在在我的应用程序中,如果我创建父对象(QObject或其子类)和几个子对象(子对象表示QObject树),最后在应用程序结束时,我删除一个父对象(在exe中),dll将删除所有子对象


那么为什么它没有任何问题呢?

C++标准没有“DLL”或“模块”的概念.QT模块默认情况下是使用/MD构建的,这是一个可以避免此问题的编译器选项。请注意,链接的文章已经过时,Microsoft CRT从VS2012开始不再使用私有堆,现在从默认进程堆进行分配。