繁体   English   中英

结构数组的指针初始化

[英]Pointer initialization of a struct array

我的应用程序崩溃。

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

struct Record
{
    float m_fSimulationTime;
    unsigned char m_szflags;
};

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

Record *m_record[64];

然后我将其初始化:(这里发生崩溃(读取时违反权限))

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
}

希望您能帮我解决我在这里想念的东西xx

感谢您的建议!

变量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;

}

如果在编译时大小为9固定,则更好的解决方案是使用数组数组:

Record m_record[64][9];

在这种情况下,我宁愿建议改用std::array

如果在编译时不知道两个数组的大小,而是在运行时输入,则使用std::vector代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM