精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>C/C++>>技术精解:内存、进程、线程等>>DLL中虚析构函数为何不能用?

主题:DLL中虚析构函数为何不能用?
发信人: andonior()
整理人: wenbobo(2002-12-06 22:21:47), 站内信件
DLL中虚析构函数为何不能用?

我在DLL中定义了一个类,这个类有个虚析构函数,
从这个类继承的一个类中实际定义了析构函数,
做成的DLL一被调用就。。。。
我记得在DLL中不能申请内存给外部使用,但这样不算申请吧?
有那位高手知道为什么吗?

附:
DLL的程序
a.h
        #include <windows.h>
        #ifdef _USRDLL
        #define EXPORT __declspec(dllexport)
        #else
        #define EXPORT
        #endif
        class EXPORT P {
        public:
                P();
                virtual ~P();
        };
        class EXPORT A : public P {
        public:
                A();
                ~A();
        };

a.cpp:
        #include "a.h"
        A::A(){}
        A::~A(){}
        P::P(){}
        P::~P(){}

调用的程序
main.cpp
        #include "a.h"

        void main()
        {
                A * p = new A;
                delete p;
        }

--
------------------------
悄悄地来,悄悄地去,
挥挥手,带不走一片云彩。
------------------------

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.190.115]
===================================================================================
发信人: tgm98 (夏雪), 信区: CLanguage
标  题: Re: DLL中虚析构函数为何不能用?
发信站: 网易虚拟社区 (Wed Sep  1 10:49:39 1999), 站内信件
:    .......
dll一般只能EXPORT 函数,如果是类的话,就有点特殊,你要好好看微软的文档
说明,有一些特殊的要求。另外,DLL中是可以申请内存给外部使用的,但在释放
时,最好也在DLL中释放。
--
我一直认为严肃和忠贞是生命中最美的东西,
严肃地生活,严肃地学习,严肃地工作。。。
忠贞地爱人,忠贞地承诺,忠贞地思考。。。
可是,在这个物欲横流的堕落的世界,
又有谁能相信我的严肃和忠贞?
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.191.59]



[关闭][返回]