向量分配C ++时的例外情况

时间:2013-10-25 11:37:28

标签: c++ visual-studio-2012 vector

我有C ++代码用于C#代码。当它为Win32构建时似乎没问题,但后来我为x64构建了一些奇怪的事情开始发生。可能它与平台无关,但我没有其他想法,为什么会发生这种情况。

以下是下面的示例,它是我的代码的简化副本,在x64的控制台应用程序中完美运行,但不在我的库中。我的库的特点:它使用静态链接的cryptopp库,我自己为x64构建它并使用运行时库= MDd(尽管建议使用MTd并且我也尝试了它也没有效果)。我的cpp库也导出了方法。我不记得我改变了任何项目属性,除了运行时库和链接cryptopp的路径。

此代码在同一解决方案中从测试项目调用,也从C#代码调用,效果相同。在测试项目开始之前,在运行测试方法之前,KernelBase.dll

中有很多例外
// library

class SymmetricAlgorithm
{
public:
    SymmetricAlgorithm() {}
    vector<byte> Key;
    vector<byte> IV;
};

class Data 
{
public:
    Data(vector<byte> b) {_b = b;}
    vector<byte> GetBytes() {return _b;}

private:
    vector<byte> _b;
};


// test project

vector<byte> b(10, 1);
Data key = Data(b);
SymmetricAlgorithm sa;
sa.Key = key.GetBytes();

我在vector._Tidy()中得到的异常消息(在最后一行的向量赋值向量中调用)方法说:

  

&gt; vstest.executionengine.exe中的0x000007fefdaa940d(KernelBase.dll)的第一次机会异常:Microsoft C ++异常:&gt; Microsoft :: VisualStudio :: CppUnitTestFramework :: CSEException在内存位置0x1d26baf0。

     

如果存在此异常的处理程序,则可以安全地继续该程序。

0 个答案:

没有答案