结构数组的指针初始化

Ste*_*fan -1 c++ struct

我的应用程序在崩溃时崩溃了.

所以我有一个像这样的结构(但实际上它有更多的东西)

struct Record
{
    float m_fSimulationTime;
    unsigned char m_szflags;
};
Run Code Online (Sandbox Code Playgroud)

在我的课堂上,我声明它是这样的:

Record *m_record[64];
Run Code Online (Sandbox Code Playgroud)

然后我将其初始化:(并且此处崩溃发生(读取时的访问冲突))

void ClassXYZ::initRecord()
{
    for (int i = 0; i <= 32; i++)
        for (int j = 0; j < 9; j++)
            m_record[i][j].m_fSimulationTime = 0.0f; // here happens the crash
}
Run Code Online (Sandbox Code Playgroud)

我希望你能帮我解决我在这里缺少的xx

谢谢你的建议!

Som*_*ude 5

变量m_record是一个指针数组.在访问指针之前,需要先初始化指针.

例如:

for (int i = 0; i <= 32; i++)
{
    m_record[i] = new Record[9];  // Make the pointer actually point somewhere
    for (int j = 0; j < 9; j++)
        m_record[i][j].m_fSimulationTime = 0.0f;

}
Run Code Online (Sandbox Code Playgroud)

如果在9编译时修复了大小,更好的解决方案是使用数组数组:

Record m_record[64][9];
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我宁愿推荐使用std::array.

如果在编译时不知道任何一个数组的大小,而是在运行时输入,那么请std::vector改用.