dynamisch speicher allokieren



  • hallo!

    ich will dynamisch speicher für matrizen allokieren.
    das klappt auch alles wunderbar bis ich ungefähr 2500 Byte allokiert habe.
    dann kriege ich eine access-violation-exception wenn ich speicher inne gewissen intervall allokieren möchte:

    fehler treten auf bei:

    inventory[0]=(float *)malloc(800);
    inventory[0]=(float *)malloc(900);

    klappen tun:

    inventory[0]=(float *)malloc(100);
    inventory[0]=(float *)malloc(1000);

    so nem phänomen bin ich noch nie begegnet. fällt da wem was ein?
    meiner meinung nach kann das nciht an c liegen. setzt da villeicht vs grenzen?

    danke
    dirk



  • VisualStudio grenzt dich hier nicht ein, sondern du greifst auf Speicher zu der dir nicht gehört. Schonmal überlegt dir genug Speicher anzufordern?

    inventory[0]=(float )malloc(800sizeof(float));



  • Btw. was ist inventory[0] überhaupt und wie greifst du zu?



  • ok, also soll es als ganzes aussehen:
    das prinzip funktioniert u ich kann zwar grundsätzlich nicht ausschließen, dass ein fehler drin ist, aber dieseleb konstruktion hab ich ein paar mal im prog und da läuft es anstandslos.

    beim allkoieren kann ich doch kaum auf speicher zugrifen der mir nicht gehört, oder?
    es denn es liegt an productionCost (vorher allkoiert) oder items oder periods (beide lt debugger ordentlich gefüllt).

    float **productionCost;
    productionCost=(float **)malloc(items*sizeof(float *));
    productionCost[0]=(float )malloc(items*periods*sizeof(float));
    for (i=1; i<items; i++)
    {
    productionCost[i]=productionCost[i-1]+periods
    sizeof(float);
    }
    for (i=0; i<items; i++)
    {
    for (j=0; j<periods; j++)
    {
    productionCost[i][j]=0;
    }
    }


Log in to reply