我的应用程序在崩溃时崩溃了.
所以我有一个像这样的结构(但实际上它有更多的东西)
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
谢谢你的建议!
变量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改用.