この関数内の「ダブルフリーまたは破損」エラー?

パトリック

以下は私の機能です。1回は正しく実行され、2回目に呼び出されると、「ダブルフリーまたは破損」というエラーが発生します。nullで終了する文字列ではなく整数の配列を格納しているにもかかわらず、他の投稿が示唆しているように、malloc()内に+1を追加しようとしました。それは役に立たなかった。

私はこの時点で非常に混乱しています。関数の最後でfree()であったポインターがスコープから外れない理由、または範囲外になった場合、malloc()でダブルフリーと見なされる方法がわかりません。 d最後に使用されたときにfree()した後。

int getCount(int number) {

    int totalUniqueDigits = 0;

    bool* allDigits = (bool*)malloc(10 * sizeof(bool));

    do {
        int currentDigit = number % 10;
        number /= 10;
        allDigits[currentDigit] = true;
    } while (number > 0);

    for (int i = 0; i < 10; i += 2) {   
        if (allDigits[i] == true) {     
            totalUniqueDigits++;        
        }
    }

    free(allDigits);    /*This is where the problem is, but only the second time the function is called. */ 
    allDigits = NULL;

    return totalUniqueDigits; 
}
クリス・ルエンゴ

場合はnumber、その後、負であります

currentDigit = number % 10;

負にもなります(または10で割り切れる場合はゼロ)。これは、モジュラス演算子のやや厄介な(IMO)定義です。

場合はcurrentDigit、その後、負であります

allDigits[currentDigit] = true;

範囲外に書き込みます。ほとんどのシステムでは、書き込みallDigits[-1]はメモリの管理に使用される情報を上書きします。これはプログラムを直接クラッシュさせないかもしれませんが、malloc後で使用するとその影響を与える可能性があります。

もちろん、解決策は、それが負の場合に使用absまたは追加10するcurrentDigitことです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

再帰関数内の関数の呼び出しで「ダブルフリーまたは破損」エラーが発生する

分類Dev

ダブルフリーまたは破損エラー

分類Dev

Glibcエラー:ダブルフリーまたは破損

分類Dev

Cは、whileループ内の配列で検索番号を取得できず、「ダブルフリーまたは破損」エラーが発生します

分類Dev

OpenMP *** '...'のエラー:ダブルフリーまたは破損(fasttop):[アドレス] ***

分類Dev

pthreads「ダブルフリーまたは破損(アウト)」エラー

分類Dev

データ構造のダブルフリーまたは破損

分類Dev

char **を使用する場合のダブルフリーまたは破損

分類Dev

Cのダブルフリーまたは破損3D配列

分類Dev

free()の実行中に「glibcがダブルフリーまたは破損を検出しました」というエラーが発生しました

分類Dev

スタックとバイナリ式ツリーでのダブルフリーまたは破損エラー

分類Dev

memcpyでオブジェクトをコピーするときのダブルフリーまたは破損エラー

分類Dev

ダブルフリーまたは破損エラーを修正しましたが、なぜ発生するのですか?

分類Dev

ダブルフリーまたは破損(ファストトップ)エラーを把握できません

分類Dev

Flatbuffer Unionを使用すると、ダブルフリーまたは破損エラーが発生しました

分類Dev

デストラクタが理解できない出力を返します( `./a.out 'のエラー:ダブルフリーまたは破損(fasttop):)

分類Dev

エラー:ダブルフリーまたは破損(ファストトップ)

分類Dev

ダブルフリーまたは破損(ファストトップ)エラーc / c ++ linux

分類Dev

Javaダブルフリーまたは破損

分類Dev

C-ダブルフリーまたは破損

分類Dev

ダブルフリーまたは破損:C ++

分類Dev

Qtダブルフリーまたは破損

分類Dev

cythonダブルフリーまたは破損

分類Dev

ダブルフリーまたは破損(アウト)-C ++

分類Dev

ダブルフリーまたは破損C ++

分類Dev

ダブルフリーまたは破損(アウト)エラーがどこから発生しているのかをどのように知ることができますか?

分類Dev

クラス破壊時のメモリ破損(ダブルフリー)

分類Dev

ダブルフリーまたは破損(ファストトップ)

分類Dev

C ++ダブルフリーまたは破損エラー1回だけフリーしていると思われる場合

Related 関連記事

  1. 1

    再帰関数内の関数の呼び出しで「ダブルフリーまたは破損」エラーが発生する

  2. 2

    ダブルフリーまたは破損エラー

  3. 3

    Glibcエラー:ダブルフリーまたは破損

  4. 4

    Cは、whileループ内の配列で検索番号を取得できず、「ダブルフリーまたは破損」エラーが発生します

  5. 5

    OpenMP *** '...'のエラー:ダブルフリーまたは破損(fasttop):[アドレス] ***

  6. 6

    pthreads「ダブルフリーまたは破損(アウト)」エラー

  7. 7

    データ構造のダブルフリーまたは破損

  8. 8

    char **を使用する場合のダブルフリーまたは破損

  9. 9

    Cのダブルフリーまたは破損3D配列

  10. 10

    free()の実行中に「glibcがダブルフリーまたは破損を検出しました」というエラーが発生しました

  11. 11

    スタックとバイナリ式ツリーでのダブルフリーまたは破損エラー

  12. 12

    memcpyでオブジェクトをコピーするときのダブルフリーまたは破損エラー

  13. 13

    ダブルフリーまたは破損エラーを修正しましたが、なぜ発生するのですか?

  14. 14

    ダブルフリーまたは破損(ファストトップ)エラーを把握できません

  15. 15

    Flatbuffer Unionを使用すると、ダブルフリーまたは破損エラーが発生しました

  16. 16

    デストラクタが理解できない出力を返します( `./a.out 'のエラー:ダブルフリーまたは破損(fasttop):)

  17. 17

    エラー:ダブルフリーまたは破損(ファストトップ)

  18. 18

    ダブルフリーまたは破損(ファストトップ)エラーc / c ++ linux

  19. 19

    Javaダブルフリーまたは破損

  20. 20

    C-ダブルフリーまたは破損

  21. 21

    ダブルフリーまたは破損:C ++

  22. 22

    Qtダブルフリーまたは破損

  23. 23

    cythonダブルフリーまたは破損

  24. 24

    ダブルフリーまたは破損(アウト)-C ++

  25. 25

    ダブルフリーまたは破損C ++

  26. 26

    ダブルフリーまたは破損(アウト)エラーがどこから発生しているのかをどのように知ることができますか?

  27. 27

    クラス破壊時のメモリ破損(ダブルフリー)

  28. 28

    ダブルフリーまたは破損(ファストトップ)

  29. 29

    C ++ダブルフリーまたは破損エラー1回だけフリーしていると思われる場合

ホットタグ

アーカイブ