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

ステファン・ジュントウスキー

だから私はプログラミングの割り当てのこの紹介を得ました、私は次のシーケンス1、121、1213121、121312141213121などのn番目のメンバーを見つけるプログラムを書かなければなりません。基本的に、最初のメンバーは1で、次のメンバーはすべて[前のメンバー] [n] [前のメンバー]で構成されます。N <10。それで、私は理解できないこの問題を抱え、インターネットでそれを検索しようとしましたが、私を助けることができるものは何も得られませんでした。

#include "stdafx.h"
#include <iostream>

using namespace std;

int size(int n, int realsize);
int main()
{
    int n;
    cin >> n;
    if (n == 1) {
        cout << "1";
        return 0;
    }
    int helper = 0;
    char c = '2';
    char* look;
    char* say;
    say = new char[size(n, 1) + 1]();
    look = new char[size(n - 1, 1) + 1]();
    look[0] = '1';
    while (helper < n) {
        for (int i = 0; i < size(helper + 1, 1); i++) {
            say[i] = look[i];
        }
        say[size(helper + 1, 1)] = c;
        for (int i = size(helper + 1, 1) + 1; i < size(helper + 1, 1) * 2 + 1; i++) {
            say[i] = look[i - (size(helper + 1, 1) + 1)];
        }
        for (int i = 0; i < size(helper + 1, 1) * 2 + 1; i++) {
            look[i] = say[i];
        }
        helper += 1;
    }
    cout << say;
    delete[] say;
    delete[] look;
    return 0;
}

int size(int n, int realsize)
{
    if (n == 1)
        return realsize;
    else
        return size(n - 1, realsize * 2 + 1);
}
ミッチ

look変数の容量を上書きしています。の内容全体で書かれてsayしまうので、同じサイズにする必要があります。

以下のコードを良いコードとして容認しませんが、それはあなた自身の実装からの最小限の調整であり、実用的な結果に向けて継続するためのより強固な基盤を提供するはずです。最初の数個の数字でテストしましたが、それが完璧であるとは限りません。

#include <iostream>

using namespace std;

int size(int n, int realsize);

int main()
{
    int n;
    cin >> n;
    if (n == 1)
    {
        cout << "1";
        return 0;
    }
    int helper = 0;
    char c = '2';
    char * look;
    char * say;
    say = new char[size(n, 1) + 1];     // Ditch the () call, which is confusing.
    look = new char[size(n, 1) + 1];    // Make the same size as "say"
    look[0] = '1';
    while (helper < n - 1)  // You're overrunning this loop I think, so I did it to n - 1.
    {
        for (int i = 0; i < size(helper + 1, 1); i++)
        {
            say[i] = look[i];
        }
        say[size(helper + 1, 1)] = c + helper;  // You were adding '2' every time, so this will add 2, 3, 4, etc incrementally.
        for (int i = size(helper + 1, 1) + 1; i < size(helper + 1, 1) * 2 + 1; i++)
        {
            say[i] = look[i - (size(helper + 1, 1) + 1)];
        }
        for (int i = 0; i < size(helper + 1, 1) * 2 + 1; i++)
        {
            look[i] = say[i];
        }
        helper += 1;
    }
    say[size(n, 1)] = '\0'; // Null-terminate "say" before printing it out.
    cout << say;
    delete[] say;
    delete[] look;
    return 0;
}

int size(int n, int realsize)
{
    if (n == 1)
        return realsize;
    else
        return size(n - 1, realsize * 2 + 1);
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

ヒープ破損が検出されましたMalloc()Free()

分類Dev

デストラクタでヒープの破損が検出されました

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

iOSエラー:ヒープの破損が検出され、空きリストが破損し、ガード値が正しくありません:0

分類Dev

スタックの破損が検出され、dalvikVMがクラッシュしました

分類Dev

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

分類Dev

shared_ptrが破棄されたときのヒープの破損

分類Dev

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

分類Dev

画面オーバーレイが検出され、Androidの権限がブロックされました

分類Dev

画面オーバーレイが検出され、Androidの権限がブロックされました

分類Dev

画面オーバーレイが検出され、Androidの権限がブロックされました

分類Dev

動的配列を削除した後のヒープの破損

分類Dev

ペーパークリップが添付されたmp3は、アップロード後に破損します

分類Dev

glibcが検出されました-ダブルフリーまたは破損(!prev)

分類Dev

strcatを2回使用した後のヒープ破損

分類Dev

PostgreSQLのデッドロックが検出されました

分類Dev

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

Related 関連記事

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

    ヒープ破損が検出されましたMalloc()Free()

  11. 11

    デストラクタでヒープの破損が検出されました

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

    iOSエラー:ヒープの破損が検出され、空きリストが破損し、ガード値が正しくありません:0

  17. 17

    スタックの破損が検出され、dalvikVMがクラッシュしました

  18. 18

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

  19. 19

    shared_ptrが破棄されたときのヒープの破損

  20. 20

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

  21. 21

    画面オーバーレイが検出され、Androidの権限がブロックされました

  22. 22

    画面オーバーレイが検出され、Androidの権限がブロックされました

  23. 23

    画面オーバーレイが検出され、Androidの権限がブロックされました

  24. 24

    動的配列を削除した後のヒープの破損

  25. 25

    ペーパークリップが添付されたmp3は、アップロード後に破損します

  26. 26

    glibcが検出されました-ダブルフリーまたは破損(!prev)

  27. 27

    strcatを2回使用した後のヒープ破損

  28. 28

    PostgreSQLのデッドロックが検出されました

  29. 29

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

ホットタグ

アーカイブ