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

ジェイミー・トウェルズ

行列のクラスを書くように頼まれましたが、これまでのところ、次のようなものがあります。

コード

ただし、「次のメンバー関数を実装する必要があります:パラメーター化されたコンストラクター(newを使用)およびデストラクタ(deleteを使用)」

それが何を意味するのかよくわかりませんが、私はそれをやったと思います。問題は、65行目のコメントを外すと、これまでに見たことのない奇妙なランタイムエラーが発生することです。私が間違っていることについて何か考えはありますか?ありがとう:)

編集:誰が私の質問に反対票を投じましたか、そしてその理由は何ですか?

また、私は追加しました:

        matrix(matrix &m) {
        // Copy size and declare new array
        mdata=0; size=(m.getcols()*m.getrows());
        if(size>0) {
            mdata=new double[size];
            // Copy values into new array
            for(int i=0;i<size;i++) {
                mdata[i] = m.mdata[i];
            }
        }
    }

そして

delete [] mdata;

エラーがなくなったので、IlyaKobelevskiyとaruisdanteに回答していただきありがとうございます。

イリヤ・コベレフスキー

コピーコンストラクターを実装しなかったため、乗算関数から値を返すときにデフォルトのコンストラクターが呼び出されます。

デフォルトのコンストラクターは、メンバーをバイト単位でコピーするだけなので、同じメモリブロックを指すmdataを含む2つの行列ができあがります。2番目の行列のデストラクタが呼び出されると、すでに解放されているメモリを解放しようとしているため、エラーが発生します。

もちろん、それに加えて、他の人が削除[]について指摘したこともあります。

一般に、3つのルールに従う必要がありますあなたのケースに適用すると、デストラクタで重要なことを行う場合は、代入演算子とコピーコンストラクタを明示的に実装するか、プライベートとして宣言して実装しないで、コンパイラによって生成される自動化を回避し、クラスをコピーできないようにする必要があります。 。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

httr :: oauth_service_token()を呼び出すとハードクラッシュ-ダブルフリーまたは破損(fasttop)

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

./a.out:共有ライブラリのロード中にエラーが発生しました:libgsl.so.23:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません

分類Dev

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

分類Dev

catalina.outのエラーを修正する方法「libjli.so:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません」

分類Dev

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

分類Dev

Googleデータエクスポートでは、ダウンロードするzipファイルが破損していますが、ブラウザの選択に基づいてzipファイルが破損しますか?

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

SeleniumWebdriverスクリプトが理解できないエラーを返します

分類Dev

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

Related 関連記事

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    httr :: oauth_service_token()を呼び出すとハードクラッシュ-ダブルフリーまたは破損(fasttop)

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

    ./a.out:共有ライブラリのロード中にエラーが発生しました:libgsl.so.23:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません

  16. 16

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

  17. 17

    catalina.outのエラーを修正する方法「libjli.so:共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません」

  18. 18

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

  19. 19

    Googleデータエクスポートでは、ダウンロードするzipファイルが破損していますが、ブラウザの選択に基づいてzipファイルが破損しますか?

  20. 20

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

  21. 21

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

  22. 22

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

  23. 23

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

  24. 24

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

  25. 25

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

  26. 26

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

  27. 27

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

  28. 28

    SeleniumWebdriverスクリプトが理解できないエラーを返します

  29. 29

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

ホットタグ

アーカイブ