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

MikeBurt

このコードを実行すると、デストラクタ中にエラーが発生します。FloatArrayのデータメンバーは.... float * mData; int mSize;

私が得るエラーはヒープ破損が検出されました:0x004c7db8での通常のブロック(#141)の後

#ifndef FLOAT_ARRAY_H
#define FLOAT_ARRAY_H
class FloatArray
{
public:
    // Create a FloatArray with zero elements.
    FloatArray();

    // Create a FloatArray with 'size' elements.
    FloatArray(int size);

    // Create a FloatArray from another FloatArray--
    // be sure to prevent memory leaks!
    FloatArray(const FloatArray& rhs);

    // Free dynamic memory.
    ~FloatArray();

    // Define how a FloatArray shall be assigned to
    // another FloatArray--be sure to prevent memory
    // leaks!
    FloatArray& operator=(const FloatArray& rhs);

    // Resize the FloatArray to a new size.
    void resize(int newSize);

    // Return the number of elements in the array.
    int size();

    // Overload bracket operator so client can index
    // into FloatArray objects and access the elements.
    float& operator[](int i);

private:
    float* mData; // Pointer to array of floats (dynamic memory).
    int mSize; // The number of elements in the array.
};
#endif // FLOAT_ARRAY_H


#include "FloatArray.h"

FloatArray::FloatArray()
{
    mData = new float[0];
}

FloatArray::FloatArray(int size)
{
    mData = new float[size];
    mSize = size;
}

FloatArray::FloatArray(const FloatArray& rhs)
{
    mData = new float[rhs.mSize];
    mSize = rhs.mSize;

    for (int i = 0; i < rhs.mSize; i++)
    {
        mData[i] = rhs.mData[i];
    }

}

FloatArray::~FloatArray()
{
    delete[] mData;
    mData = 0;
}

FloatArray& FloatArray::operator=(const FloatArray& rhs)
{
    if (this == &rhs)
        return *this;

    delete[] mData;

    mData = new float[rhs.mSize];
    mSize = rhs.mSize;

    for (int i = 0; i < rhs.mSize; i++)
    {
        mData[i] = rhs.mData[i];
    }

    return *this;
}

void FloatArray::resize(int newSize)
{
    mSize = newSize;
}

int FloatArray::size()
{
    return mSize;
}

float& FloatArray::operator[](int i)
{
    return mData[i];
}

#include "FloatArray.h"
#include <iostream>
using namespace std;
void PrintFloatArray(FloatArray& fa)
{
    cout << "{ ";
    for (int i = 0; i < fa.size(); ++i)
        cout << fa[i] << " ";
    cout << "}" << endl << endl;
}
int main()
{
    FloatArray A;
    A.resize(4);
    A[0] = 1.0f;
    A[1] = 2.0f;
    A[2] = 3.0f;
    A[3] = 4.0f;
    cout << "Printing A: ";
    PrintFloatArray(A);
    FloatArray B(A);
    cout << "Printing B: ";
    PrintFloatArray(B);
    FloatArray C = B = A;
    cout << "Printing C: ";
    PrintFloatArray(C);
    A = A = A = A;
    cout << "Printing A: ";
    PrintFloatArray(A);
}
チーム

mSizeデフォルトのコンストラクターで0に初期化されていませんFloatArray::FloatArray()

また、ではresize()、変更するだけmSize新しいサイズに十分なメモリを割り当てませんでした。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

Raspberry pi:不整合が検出され、アサーションが失敗しました

分類Dev

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

分類Dev

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

分類Dev

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

分類Dev

NewRelicインストルメンテーションの検出に失敗しました。Androidアプリケーションのエラー

分類Dev

復号化されたアサーションのOpensamlアサーション署名の検証に失敗しました

分類Dev

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

分類Dev

「必須」の検証が失敗した後でも、MVCアクションがヒットしています。ボタンをクリックすると検証メッセージが表示されますが、私のアクションを呼び出しています

分類Dev

TeamCity SVNエージェント側のチェックアウトがエラーsvnで失敗します:E200030:フォルダーで未完了のトランザクションが検出されました

分類Dev

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

分類Dev

エラーデバッグアサーションの取得に失敗しました:式c> = -1 && c <= 255

分類Dev

アプリケーションでAndroidJNIがエラーを検出しました:保留中の例外でJNIGetMethodIDが呼び出されました

分類Dev

grpc:サーバーは応答のエンコードに失敗しました:rpcエラー:コード=内部desc = grpc:マーシャリング中のエラー:プロト:マーシャルがnilで呼び出されました

分類Dev

IntelliJ(Play Framework)アサーションからのscalacコンパイラエラーが失敗しました

分類Dev

OpenCV c ++アサーションがdrawContoursの呼び出しに失敗しました

Related 関連記事

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

    Raspberry pi:不整合が検出され、アサーションが失敗しました

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

    NewRelicインストルメンテーションの検出に失敗しました。Androidアプリケーションのエラー

  20. 20

    復号化されたアサーションのOpensamlアサーション署名の検証に失敗しました

  21. 21

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

  22. 22

    「必須」の検証が失敗した後でも、MVCアクションがヒットしています。ボタンをクリックすると検証メッセージが表示されますが、私のアクションを呼び出しています

  23. 23

    TeamCity SVNエージェント側のチェックアウトがエラーsvnで失敗します:E200030:フォルダーで未完了のトランザクションが検出されました

  24. 24

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

  25. 25

    エラーデバッグアサーションの取得に失敗しました:式c> = -1 && c <= 255

  26. 26

    アプリケーションでAndroidJNIがエラーを検出しました:保留中の例外でJNIGetMethodIDが呼び出されました

  27. 27

    grpc:サーバーは応答のエンコードに失敗しました:rpcエラー:コード=内部desc = grpc:マーシャリング中のエラー:プロト:マーシャルがnilで呼び出されました

  28. 28

    IntelliJ(Play Framework)アサーションからのscalacコンパイラエラーが失敗しました

  29. 29

    OpenCV c ++アサーションがdrawContoursの呼び出しに失敗しました

ホットタグ

アーカイブ