c-MinGw的执行时间错误



我有一个运行良好的函数:

void testeStatic2()
{
    static char elementos[8][128];
    const int qtdCol = 128;
    const int qtdLn = 8;
    printf("n");
    char* pLinhas[qtdCol];
    int i = 0;
    for (i = 0; i < qtdLn; i++)
        pLinhas[i] = elementos[i];
    Fila_Init(&TELIT_dadosRecebidos, qtdLn, qtdCol, pLinhas);
}

我无法以更简单的方式重新创建此代码,因此,如果可能的话,忽略其余代码,问题是,尽管它有效,但如果我去掉printf("n"),它会给我一个执行时间错误。有人知道吗?

谢谢。。。

只需将pLinhas设置为static即可正常工作。我想问题是在函数作用域结束后引用了不存在的指针。所以,这段代码已经过测试,并且有效!

void FilaInit()
{   int i = 0;
    static char elementos[8][128];
    static char * pLinhas[8];
    for (i = 0; i < 8; i++)
        pLinhas[i] = &elementos[i][0];
    Fila_Init(&TELIT_dadosRecebidos, 8, 128, pLinhas);
} 

一个细节是pLinhas是一个指向char的指针数组,一个指向字符串的指针数组。其大小为8*4字节。另一点是,我必须使用常量整数来声明pLinhas。

我想强调一下这个解决方案。。。我搜索了很多这种结构化的数据。在不能使用malloc(如嵌入式应用程序),但需要创建多个不同大小的队列的情况下,这是非常有趣的。

对于那些想使用这个解决方案的人,我在谷歌代码上创建了这个项目:Qwoma。很高兴能收到对这个简单项目的批评和想法。

谢谢大家!

最新更新