0

realloc関数に問題があります:

***glibcが検出されました***realloc():無効な次のサイズ:

コードの関連部分は次のとおりです。

    char* pathfile = NULL;
    int tcpargc=6;
    char *tcpargv[tcpargc];
    int it;
    for (it = 0;it < tcpargc;it++)
       tcpargv[it] = NULL;
    ...
    while (1) {
    ...
    if (pathfile == NULL)
       pathfile=(char*)malloc((strlen(RAMDIR)+strlen(tempfilename)+7)*sizeof(char));
    else {
    if ((tmp=(char*)realloc(pathfile,(strlen(RAMDIR)+strlen(tempfilename)+7)*sizeof(char))) == NULL)
    {
 printf("ERROR: realloc failed");
        free(pathfile);
    }
    else
        pathfile = tmp;
    }
    ...
    if (tcpargv[4] == NULL)
    tcpargv[4]=(char*)malloc((strlen("--infile=")+strlen(pathfile)+1)*sizeof(char));
    else {
    if ((tmp = (char*)realloc(tcpargv[4],strlen("--infile=")+strlen(pathfile)+1)*sizeof(char)))   == NULL){
    printf("ERROR: realloc failed");
    free(tcpargv[4]);
    }
    else
    tcpargv[4] = tmp;
    } 
    ...    
    }

何度もチェックしましたが、エラーが見つかりませんでした。
助けてくれてありがとう。

4

1 に答える 1

1

このエラーは、glibc メモリ割り当てサブシステムが使用する簿記データをコードが上書きしている可能性があることを示しています。Michael Mior がコメントで提案したように、Valgrindでコードを実行してみてください。このようなメモリ破損エラーを見つけるのは非常に得意です。

于 2010-09-21T18:05:34.323 に答える