我有这个工作正常的功能:

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的情况下(例如嵌入式应用程序),但是需要创建多个大小不同的队列,这非常有意思。

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

感谢大家!

关于c - MinGw执行时间出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17558616/

10-11 19:34