添加新行时工作代码抛出异常。调试技巧?

Working code throwing exception when new lines added. Debugging tips?

我正在开发专有代码库,所以我必须对此进行抽象。

我正在尝试在 MyApplication 中设置 DataType_T*** myData 的值。我正在使用共享的 C++ 库(我表示库 A)来设置值。共享 C++ 库只是 C API.The 周围的简单包装器 class C API 作为共享库包含在库 A 中(我表示库 B)。

所以 MyApplication 在 A 中调用 GetData(myData),在 B 中调用 GetData(myData)。

MyApplication 具有以下代码:

void OnButtonPress(){
    const DataType*** myData;
    GetData(myData);
    DataTypeVal1 val1 = (*myData)[0]->val1; // just grabbing some info.
}

GetData(myData): works, and properly sets myData.

Me: types some new code

void OnButtonPress(){
    const DataType*** myData;
    GetData(myData);
    const void* strData = (*myData)[0]->strData; // just grabbing some info now that we have the pointer.

    //Add lots more new code that does this over and over for each member of myData
    String^ str = gcnew String(static_cast<const char*>(strData));
}

GetData(myData): throws a write access violation.

Me: ". . . . . . .what."

我以前没有遇到过这样的问题,所以我真的不知道如何调试。

有建议吗?

谢谢。


已解决。 我发现了我未定义的行为。

我想你想要这样的东西:

const DataType** myData;
GetData(&myData);
const void* strData = myData[0]->strData; 

因为在原始代码中你只是按值传递一个指针;一个未初始化的指针,然后访问相同的未初始化值。

ed: 修复了第三行