Unit testing 单元测试visualc++;删除指针时抛出的代码 我目前在VisualStudio 2010中对非托管VisualC++代码进行单元测试。 我的解决方案结构如下: <Solution> - [0] Static library project (visual c++, no clr) - [1] Project that's using [0] (visual c++, no clr, referencing [0]) - [2] Unit Test Project (dynamic library, /clr, referencing [0]) </Solution>

Unit testing 单元测试visualc++;删除指针时抛出的代码 我目前在VisualStudio 2010中对非托管VisualC++代码进行单元测试。 我的解决方案结构如下: <Solution> - [0] Static library project (visual c++, no clr) - [1] Project that's using [0] (visual c++, no clr, referencing [0]) - [2] Unit Test Project (dynamic library, /clr, referencing [0]) </Solution>,unit-testing,visual-studio-2010,pointers,visual-c++,Unit Testing,Visual Studio 2010,Pointers,Visual C++,在项目[2]中,我正在测试SomeClass,如下所示,这是有效的: class SomeClass { public: SomeClass() {} int Testme() { return 42; } }; [TestClass] public ref class SomeClassUnitTests { public: [TestMethod] void TestmeReturns42() { SomeClass sc;

项目[2]
中,我正在测试
SomeClass
,如下所示,这是有效的:

class SomeClass
{
public:
    SomeClass() {}
    int Testme() { return 42; }
};
[TestClass]
public ref class SomeClassUnitTests
{
public:
    [TestMethod]
    void TestmeReturns42()
    {
        SomeClass sc;
        Assert::AreEqual<int>(42, sc.Testme());
    }
};
什么问题会导致测试在这里抛出,为什么用“new”分配内存有效,而删除无效


调试版本和发布版本是否不匹配,或者它们都是相同的?您给了我缺少的线索,因为我不知何故(并且仅在调试版本中)在测试项目中包含了MFC,因为我在被测试的项目中使用了它。。。因此,我从测试项目和正在测试的项目中删除了所有与MFC相关的代码,现在delete调用不再使程序崩溃。我仍然不知道为什么包含MFC会导致这个问题。。。
[TestClass]
public ref class SomeClassUnitTests
{
public:
    [TestMethod]
    void TestmeReturns42()
    {
        SomeClass *ptr = new SomeClass();
        Assert::AreEqual<int>(42, ptr->Testme());

        // Without following line, everything works:
        if (ptr) delete ptr;
    }
};