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

remax

だから私はスパース行列で動作するプログラムを書かなければなりません、私は私の頭の周りのポインターとポインターの配列を持っています。

このコードをビルドするとエラーは返されませんが、実際にプログラムを使用すると、ヒープが破損していると表示されます。どうしたらいいのかわからない

PS理解しにくいコメントで申し訳ありませんが、私の母国語はセルビア語なので、大学のプロジェクトのコードにコメントするために使用しています。

#include <stdio.h>
#include <stdlib.h>
#define maxR 10
#define maxC 10
#define maxE 10

typedef struct node 
{
int val;
int row;
int col;
struct node *nextD;
struct node *nextR;
} element;


 typedef struct matrix 
{
element *row[maxR];
element *col[maxC];
}matrix;


int main() {

int Row; //redni broj reda
int Col;//redni broj kolone
int Val; //vrednost
int e;// broj nepodrazumevanih elemenata
int r; //broj redova
int c; // broj kolona
int i; // brojac redova
int j; //brojac kolona
int userInput; //korisnikov izbor u meniju
int podrazumevani;
int x, y;
int X;
int n_of_elements = 0; //broj nepodrazumevanih elemenata u listi

element* novi;
element *trenutni;
trenutni = NULL;

matrix* M = malloc(sizeof(matrix));
for (i = 0; i < maxR; i++) 
{

    M->row[i] = NULL;
}
for (i = 0; i < maxR; i++)
{

    if (M->row[i] == NULL) 
    {
        printf("NULLR\n");
    };
}

for (j = 0; j < maxC; j++)
{

    M->col[j] = NULL;
}
while (1)
{
    printf(
        "1. Ucitavanje matrice sa nepodrazumevanim vrednostima\n"
        "2. Postavljanje podrazumevanih vrednosti\n" //ucitavanje sa ulaza
        "3. Dohvatanje zadatog elementa\n" //prolazenje kroz listu i ispisivanje na ekran Note to self: u zavisnosti da li je efikasnije ici po kolonama ili redovima
        "4. Postaviti vrednost zadatom elementu\n" //ucitavanje koordinata elemenata i prolazak kroz listu, menjanje vrednosti elementa
        "5. Ispisivanje broja nepodrazumevanih elemenata\n" // prolazi se kroz matricu i inkrementira brojac ako je element razlicit od nule
        "6. Ispis cele matrice\n"
        "7. Brisanje matrice\n" // radi se pomocu free funkcije
        "0. Izlaz iz programa\n");

    scanf_s("%d", &userInput);

    switch (userInput)
    {
    case 0:
        exit(1);
    case 1:
        printf("Unesite broj redova matrice: \n");
        scanf_s("%d", &r);
        if ((r > maxR) || (r < 0))
        {
            printf("Uneli ste veci broj od maksimuma (10) ili ste uneli negativan, pokusajte ponovo: \n");
            scanf_s("%d", &r);
        }
        printf("Unesite broj kolona matrice: \n");
        scanf_s("%d", &c);
        if ((c > maxC) || (c < 0))
        {
            printf("Uneli ste veci broj od maksimuma (10) ili ste uneli negativan, pokusajte ponovo: \n");
            scanf_s("%d", &c);
        }
        printf("Unesite broj nepodrazumevanih elemnata matrice: \n");
        scanf_s("%d", &e);
        if ((e > maxE) || (e < 0) || (e > (0.1*r*c)))
        {
            printf(
                "Uneli ste veci broj od maksimuma (10) ili ste uneli negativan, "
                "ili veci broj nego sto je uslovljen unetim r i c vrednostima, 10 procenata od r*c, pokusajte ponovo: \n"
            );
            scanf_s("%d", &e);
        }
        for (int x = 0; x < e; x++) //petlja koja kontrolise broj cvorova
        {


            printf("Unesite redni broj vrste: \n");
            scanf_s("%d", &Row);
            printf("Unesite redni broj kolone: \n");
            scanf_s("%d", &Col);
            printf("Unesite element matrice veci od nule: \n");
            scanf_s("%d", &Val);

            novi = malloc(sizeof(novi));
            novi->row = Row;
            novi->col = Col;
            novi->val = Val;
            novi->nextR = NULL;
            novi->nextD = NULL;

            //kreiranje R niza 

            for (i = 0; i < r; i++)
            {

                if (i == (Row - 1)) //ako se indeks niza poklapa sa unetom vrednoscu onda se prelazi na upis
                {
                    //element* trenutni = novi;
                    if (M->row[i] == NULL)
                    {
                        M->row[i] = novi;
                    }
                    else
                        trenutni->nextR = novi;
                    trenutni = novi;
                }
                // lista ce morati da se sortira po rastucoj vrednosti u Col

            }

            /*for (j = 0; j < c; j++)
            {

                if (j == Col - 1)
                {




        }
                }
*/




}
         for (i = 0; i < r; i++) 
       {


if (M->row[i] != NULL)
                {
                    element* temp = NULL;
                    temp = M->row[i];
                    while (temp)
                    {
                        printf("%d->", temp->val);
                        temp = temp->nextR;
                    }
                }
                else printf("NULL\n");

            }

        break;
    case 2:
        printf("Unesite podrazumevani element, pozeljno 0:  \n");
        scanf_s("%d", &podrazumevani);
        break;
    case 3:
        printf("Unesite koordinate elementa koji zelite da prikazete na ekranu (x za vrstu, y za kolonu): \n");
        scanf_s("%d", &x);
        scanf_s("%d", &y);



        break;
    case 4:
        printf("Unesite koordinate i vrednost elementa koji zelite da azurirate prikazete na ekranu (x za vrstu, y za kolonu): \n");
        scanf_s("%d", &x);
        scanf_s("%d", &y);
        scanf_s("%d", &X);

        break;
    case 5:

        break;
    case 6:



        break;
    case 7:
        break;
    case 8:
        break;
    }
}
}
chux-モニカを復活させる

割り当てが正しくありません。

1つのポインターに割り当てられたスペースをコード化します。代わりに、ポイントされたオブジェクトのサイズに割り当てます。

// novi = malloc(sizeof(novi));
novi = malloc(sizeof *novi);

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

コンプレッサーを作成しましたが、アーカイブが破損していて、理由がわかりません

分類Dev

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

分類Dev

Pythonの出力がループしている理由がわかりません

分類Dev

ループが停止していますが、理由がわかりません

分類Dev

このdo-whileループが機能していませんが、理由がわかりません

分類Dev

ループからのデータが一致していません。理由がわかりません。

分類Dev

ループが継続していない理由がわかりません

分類Dev

ヒープ破損が発生しているのはなぜですか?

分類Dev

newまたはdeleteを使用していないのに、なぜヒープが破損するのですか?

分類Dev

c ++の「ヒープが破損しています」エラーを修正する方法は?

分類Dev

BTRFS:ノードが破損しています。キーの順序が正しくありません

分類Dev

BTRFS:ノードが破損しています。キーの順序が正しくありません

分類Dev

ブール変数が変化していて、理由がわかりません-C言語

分類Dev

私のgroupbyが失敗している理由がわかりません

分類Dev

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

分類Dev

ランダムにループしている間ループします。理由がわかりません。

分類Dev

私のcプログラムはセグメンテーション違反を生成していて、その理由がわかりません

分類Dev

プログラムがループして印刷されない理由がわかりません

分類Dev

response.onを使用している理由がわかりません

分類Dev

clearInterval()関数が機能していません。理由がわかりません。

分類Dev

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

分類Dev

コンピューターが破損していませんか?

分類Dev

Javaのスキャナーが「NoSuchElementException」をスローしている理由がわかりません

分類Dev

FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

分類Dev

FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

分類Dev

サポートされていないオペランドタイプについてこのTypeErrorが発生し続ける理由がわかりません

分類Dev

使用済みのjdbc接続がリークしているようで、理由がわかりません

分類Dev

PerlGDモジュールのPNG画像が破損しているか開くことができません

分類Dev

コード行が機能していません。理由がわかりませんか?

Related 関連記事

  1. 1

    コンプレッサーを作成しましたが、アーカイブが破損していて、理由がわかりません

  2. 2

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

  3. 3

    Pythonの出力がループしている理由がわかりません

  4. 4

    ループが停止していますが、理由がわかりません

  5. 5

    このdo-whileループが機能していませんが、理由がわかりません

  6. 6

    ループからのデータが一致していません。理由がわかりません。

  7. 7

    ループが継続していない理由がわかりません

  8. 8

    ヒープ破損が発生しているのはなぜですか?

  9. 9

    newまたはdeleteを使用していないのに、なぜヒープが破損するのですか?

  10. 10

    c ++の「ヒープが破損しています」エラーを修正する方法は?

  11. 11

    BTRFS:ノードが破損しています。キーの順序が正しくありません

  12. 12

    BTRFS:ノードが破損しています。キーの順序が正しくありません

  13. 13

    ブール変数が変化していて、理由がわかりません-C言語

  14. 14

    私のgroupbyが失敗している理由がわかりません

  15. 15

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

  16. 16

    ランダムにループしている間ループします。理由がわかりません。

  17. 17

    私のcプログラムはセグメンテーション違反を生成していて、その理由がわかりません

  18. 18

    プログラムがループして印刷されない理由がわかりません

  19. 19

    response.onを使用している理由がわかりません

  20. 20

    clearInterval()関数が機能していません。理由がわかりません。

  21. 21

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

  22. 22

    コンピューターが破損していませんか?

  23. 23

    Javaのスキャナーが「NoSuchElementException」をスローしている理由がわかりません

  24. 24

    FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

  25. 25

    FragmentStatePagerAdapterがリークしていて、LeakCanaryを使用している理由がわかりません

  26. 26

    サポートされていないオペランドタイプについてこのTypeErrorが発生し続ける理由がわかりません

  27. 27

    使用済みのjdbc接続がリークしているようで、理由がわかりません

  28. 28

    PerlGDモジュールのPNG画像が破損しているか開くことができません

  29. 29

    コード行が機能していません。理由がわかりませんか?

ホットタグ

アーカイブ