C ++:通常のブロック後にヒープの破損が検出されました

LoLeRji

私は、char配列に対していくつかのトリックを実行するいくつかの関数を作成する必要があるタスクを割り当てられています。そこで、これらの関数を作成し、この「HEAP CORRUCPTION DETECTED」エラーでスタックしたときに、それらが正しく機能しているかどうかを確認しようとしました。

これが私の関数のコードです

void cagir(char cDizi[], short int baslangic, short int karSayisi, char cDondur[])
{
    //Yerel Değişken
    short int index = 0;

    /*Diziyi baslangic değerinden başlayarak, NULL karakterine ulaşılmadığı ve baslangic değeri 
      baslangic + karSayisi'na eşit ya da küçük olduğu sürece oku                              */
    for (; cDizi[baslangic] != '\0' && baslangic < baslangic + karSayisi; baslangic++)
    {
    //Okunan karakteri cDöndür dizisine yerleştir
    cDondur[index] = cDizi[baslangic];
    index += 1;  //cDöndür dizisinin index'ini 1 artır
    }
}

ここで私がやろうとしているのは、基本的に「cDizi」から指定された量の文字を取得し、それらを他の事前に作成された配列「cDondur」に配置することです。配列「cDizi」はユーザー入力の配列であり、「cDondur」はプログラムの関連部分で作成された配列です。呼び出される文字数を配列「cDondur」の範囲として割り当てたいと思いました。

これが私のプログラムで関数を呼び出し、「cDondur」配列を作成する部分です。

case '3':  //MOD - 3
    {

           short int indis, karSayisi;

           //Çağrılacak parçanın ilk karakterinin indisini öğren
           cout << "Almak istediğiniz ilk karakterin indisi : ";
           cin >> indis;

           //kaç karakterlik parça çağrılacağını öğren
           cout << indis << " indisli karakterden itibaren almak istediğiniz karakter sayısı : ";
           cin >> karSayisi;

           //Sınırı karSayisi olan bir dizi oluştur
           char *Dizi = new char[karSayisi];

           //Parça çağırma fonksiyonunu çağır
           cagir(cDizi, indis, karSayisi, Dizi);

           cout << endl;

           cout << "İstediğiniz karakterler çağrıldı : ";

           //cagir fonksiyonunun sonucu olan 'Dizi' dizisini ekrana yaz
           for (int i = 0; i < karSayisi; i++)
               cout << Dizi[i];

           delete Dizi;

           break;
    }

ここでのkarSayisiは、配列から取得する文字数であり、elemanSayisi(ARRAY)は、そのパラメーターの文字数を返す関数です。

私は本当にこれをすばやく修正する方法を見つける必要があり、修正するために3時間ほどコードに取り組んできましたが、とにかく修正する方法を見つけることができませんでした。

user2970916

forループが間違っています。baslangicがb​​aslangic + karSayisiよりも小さいときに終了します。次に、baslangicをインクリメントします。これはその問題を引き起こしている可能性があります。

void cagir(char cDizi[], short int baslangic, short int karSayisi, char cDondur[])
{
    //Local Variable
    short int index = 0;

    /*Get all characters of the array till it reacher the NULL character and while it is between
      values baslangic and baslangic + karSayisi*/
    int exit = baslangic + karSayisi;
    for (; cDizi[baslangic] != '\0' && baslangic < exit; baslangic++)
    {
    //place the characters to cDondur array and returnn cDöndür
    cDondur[index] = cDizi[baslangic];
    index += 1;  //increment index of cDondur by 1
    }
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

C ++:通常のブロック後にヒープの破損が検出されました

分類Dev

ヒープの破損が検出されました| C

分類Dev

ヒープの破損により、C ++でエラーが検出されました

分類Dev

クラス内のいくつかの配列でdelete []を呼び出しているときに「ヒープ破損が検出されました」-C ++

分類Dev

エラーc ++アサーションの失敗ヒープの破損が検出されました

分類Dev

通常のブロック後にヒープの破損が検出されました(#181)

分類Dev

通常のブロック #63 の後にヒープ破損が検出されました

分類Dev

文字列を削除した後、C ++でヒープ破損が検出されました

分類Dev

ヒープの破損が検出されました:通常のブロック後(#176)

分類Dev

C-アレイを解放するときにヒープ破損が検出されました

分類Dev

検出されたヒープ破損:通常のブロック後()

分類Dev

c ++プログラムの実行時にヒープが破損しましたエラー

分類Dev

C:###のヒープブロックが###で変更され、要求されたサイズ###を超えました

分類Dev

C ++の多重継承とアップキャストされたスマートポインターの破壊により、VS2017でヒープが破損します

分類Dev

配列 C の割り当て時にスタック破壊が検出されました

分類Dev

C ++ヒープ破損、ただしユニットテストプロジェクトのみ

分類Dev

ヒープの破損が検出されましたか?

分類Dev

C ++ウィンドウがブレークポイントをトリガーしました-ヒープの破損

分類Dev

CとC ++の混合コードプログラミングで例外をキャッチした後、オブジェクトは破棄されません

分類Dev

c ++ delete [] 2D配列によりヒープが破損しました

分類Dev

Cのヒープが破損していて、理由がわかりません

分類Dev

C ++:このコードはコンパイルされますが、ランタイムチェックの失敗#2-をスローします-変数「num」の周りのスタックが破損していました。発生した

分類Dev

ヒープが破損しています。C#dllimport、delphiPCharの戻り値

分類Dev

C ++での画像HTTPアップロードが破損しています

分類Dev

ヒープの破損-デバッグアサーションが失敗しました。dbgheap.cの1322行の式_crtIsValidHeapPointer(pUserData)

分類Dev

C ++-forループが完了した後、これらのスレッドは破棄されますか

分類Dev

ヒープ破損が検出されました-iPhone5Sのみ

分類Dev

C#アプリでマーシャリングされた構造体を受け取った直後のヒープの破損

分類Dev

デバッグエラー:ヒープの破損が検出されました

Related 関連記事

  1. 1

    C ++:通常のブロック後にヒープの破損が検出されました

  2. 2

    ヒープの破損が検出されました| C

  3. 3

    ヒープの破損により、C ++でエラーが検出されました

  4. 4

    クラス内のいくつかの配列でdelete []を呼び出しているときに「ヒープ破損が検出されました」-C ++

  5. 5

    エラーc ++アサーションの失敗ヒープの破損が検出されました

  6. 6

    通常のブロック後にヒープの破損が検出されました(#181)

  7. 7

    通常のブロック #63 の後にヒープ破損が検出されました

  8. 8

    文字列を削除した後、C ++でヒープ破損が検出されました

  9. 9

    ヒープの破損が検出されました:通常のブロック後(#176)

  10. 10

    C-アレイを解放するときにヒープ破損が検出されました

  11. 11

    検出されたヒープ破損:通常のブロック後()

  12. 12

    c ++プログラムの実行時にヒープが破損しましたエラー

  13. 13

    C:###のヒープブロックが###で変更され、要求されたサイズ###を超えました

  14. 14

    C ++の多重継承とアップキャストされたスマートポインターの破壊により、VS2017でヒープが破損します

  15. 15

    配列 C の割り当て時にスタック破壊が検出されました

  16. 16

    C ++ヒープ破損、ただしユニットテストプロジェクトのみ

  17. 17

    ヒープの破損が検出されましたか?

  18. 18

    C ++ウィンドウがブレークポイントをトリガーしました-ヒープの破損

  19. 19

    CとC ++の混合コードプログラミングで例外をキャッチした後、オブジェクトは破棄されません

  20. 20

    c ++ delete [] 2D配列によりヒープが破損しました

  21. 21

    Cのヒープが破損していて、理由がわかりません

  22. 22

    C ++:このコードはコンパイルされますが、ランタイムチェックの失敗#2-をスローします-変数「num」の周りのスタックが破損していました。発生した

  23. 23

    ヒープが破損しています。C#dllimport、delphiPCharの戻り値

  24. 24

    C ++での画像HTTPアップロードが破損しています

  25. 25

    ヒープの破損-デバッグアサーションが失敗しました。dbgheap.cの1322行の式_crtIsValidHeapPointer(pUserData)

  26. 26

    C ++-forループが完了した後、これらのスレッドは破棄されますか

  27. 27

    ヒープ破損が検出されました-iPhone5Sのみ

  28. 28

    C#アプリでマーシャリングされた構造体を受け取った直後のヒープの破損

  29. 29

    デバッグエラー:ヒープの破損が検出されました

ホットタグ

アーカイブ