我正在使用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) );
}
我很感激可能会导致这种情况发生的建议。