C ++向struct添加属性会生成“触发断点”

时间:2015-07-12 13:01:53

标签: c++ visual-studio

我正在使用Windows 8.1上的Visual Studio 2013开发一个用于在JPEG文件中读取和编辑Exif元数据的应用程序。

我有一个名为Photoprove的类,我正在使用demo.cpp文件来检查这个类的功能。

在Photoprove类中,我有一个名为Metadata的结构,用于保存JPEG内部Exif字段的各种值,它的开头如下:

struct Metadata{
    int tagID=0;
    BYTE* values;
    int noValues=0;
    long valuesStart=0;
    int ifdNo = 0;  //0=IFD0, 1=Exif, 2=GPS, 3=Interop, 4=IFD1
    ...

目前,一切正常,但我想添加另一个属性以十六进制显示tagID,所以我将结构修改为:

struct Metadata{
    int tagID=0;
    std::string tagHex = "";
    BYTE* values;
    ....

这是唯一的变化但会在demo.cpp的main()末尾导致“触发断点”错误 - 它发生在结束时。

这是dbgheap.c的内容,它再次停止,是结束括号。

 extern "C" CRTIMP int __cdecl _CrtIsValidHeapPointer(const void * pUserData )
 {
    if (!pUserData)
        return FALSE;

    if (!_CrtIsValidPointer(pHdr(pUserData), sizeof(_CrtMemBlockHeader),   FALSE))
        return FALSE;

    return HeapValidate( _crtheap, 0, pHdr(pUserData) );
 }

我很感激可能会导致这种情况发生的建议。

0 个答案:

没有答案