删除指针时

时间:2018-08-16 07:10:33

标签: unit-testing visual-studio-2010 pointers visual-c++

我目前正在Visual Studio 2010中对非托管的Visual C ++代码进行单元测试。
我的解决方案的结构如下:

<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>

Project [0]正在接受Project [2]的测试,其中包含SomeClass

class SomeClass
{
public:
    SomeClass() {}
    int Testme() { return 42; }
};

Project [2]中,我正在按以下方式测试SomeClass

[TestClass]
public ref class SomeClassUnitTests
{
public:
    [TestMethod]
    void TestmeReturns42()
    {
        SomeClass sc;
        Assert::AreEqual<int>(42, sc.Testme());
    }
};

但是,当我为堆上的SomeClass分配内存时,并且仅当我随后对其调用call时,才会弹出一条消息,表明堆已损坏/无效。

[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;
    }
};
  

什么是导致测试直接抛出这里的问题?为什么分配带有“ new”功能的内存而删除却不起作用?

0 个答案:

没有答案