C++ 从DLL导出的静态类变量显示为内存泄漏

C++ 从DLL导出的静态类变量显示为内存泄漏,c++,C++,好的,我在DLL中有一个导出类。此类有一个静态字符串列表,这些字符串在导入过程中对话框的组合框中使用。这些字符串的声明和定义如下: // In header: class MYDLL_API someClass { public: static const string stringList[]; static const int numString; }; // In .cpp const int someClass::numString = 3; const string

好的,我在DLL中有一个导出类。此类有一个静态字符串列表,这些字符串在导入过程中对话框的组合框中使用。这些字符串的声明和定义如下:

// In header:
class MYDLL_API someClass {
public:
    static const string stringList[];
    static const int numString;
};

// In .cpp
const int someClass::numString = 3;
const string someClass::stringList[numString] = {
    "String 1",
    "String 2",
    "String 3"
};
因此,实际的输出效果良好。然而,我注意到我的VS2008调试器正在转储内存,显示为

{129} normal block at 0x003D69F0, 32 bytes long.
Data: <String 1>

etc.
0x003D69F0处的
{129}正常块,32字节长。
数据:
等

因此,为了确定是谁泄漏了这个内存,我停止了在组合框中使用它们,并检查泄漏是否仍然存在,它是。因此,我的问题是,从DLL导出静态类变量是否存在一些问题,在DLL中,静态类变量被视为内存泄漏?

这可能与静态变量超出范围的顺序以及DLL卸载的时间(mfc/crt)有关

看一看——它描述了与您所看到的几乎相同的问题

还有一个提议的解决方案,但是我不知道这是否有效

我在过去遇到过类似的问题,我能够(干净地)消除这些误报的唯一方法是将这些静态定义为共享的\u ptr,并用全局“关闭”方法销毁它们