Dynaamisen struct taulukon vapautus?

spapadiidaduuu

Hellou,

Meinaa olla vähän hukassa nuo muistin varaus/vapautus hommelit tietueiden suhteen, niin eipä siinä auta kun kysyä täältä :( Jos joku vaikka tietäis...

Oletetaan että varaan muistia 80 paikkaiselle tietue taulukolle näin:

typedef struct{
UINT glampo;
double dpHeight;
}lMittariData;

data = (lMittariData*)malloc(sizeof(lMittariData)*80);

...ja myöhemmin haluan vapauttaa ko muistin, niin miten homma menee? Tästä ei ohjelma tykännyt:

if(data != 0)
free(data);

8

156

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • kääntäjä.

      ja virheilmoitus oli mikä?

    • spapadiidaduuu

      Visual Studio output:
      "Windows has triggered a breakpoint in [project name]. This may be due to a corruption of the heap, which indicates a bug in [project name] or any of the DLLs it has loaded.

      HEAP[project name]: Heap block at 001E3928 modified at 001E3E58 past requested size of 524

      HEAP[project name]: Invalid address specified to RtlValidateHeap( 001E0000, 001E3930 )"

      Jos jätän muistin raakasti vapauttamatta niin tätä ilmoitusta ei tule. Sen sijaan tulee seuraava:

      "Detected memory leaks!
      Dumping objects ->
      {58} normal block at 0x009A3950, 1280 bytes long.
      Data: 28 00 00 00 CD CD CD CD 00 00 00 00 00 C0 51 40
      Object dump complete."

    • malloc-free

      Onkohan sun koodisi ihan kunnossa mallocin ja freen välissä? Ethän muuta data-osoittimen arvoa? Saatko saman virheilmoituksen, jos kommentoit välissä olevat lohkot pois?

    • spapadiidaduuu

      Koodissa lisättiin toisessa funktiossa datan muuttujiin arvot tähän tyyliin muistinvarauksen jälkeen:

      //for loopissa index < 80
      data[index].glampo = arvo1;
      data[index].dpHeight = arvo2;

      Tämä ei kuitenkaan ohjelmalle passannut :)
      Kokeilin myös hoitaa saman globaalilla kaksiulotteisella double taulukolla, josta ohjelma ei myöskään pitänyt vaan virhe oli jotain "access violation blahblah".

      Lopuksi sain tarpeeksi ja toteutin saman ihan funktion paikallisella kaksiulotteisella double taulukolla. Oikeastaan tämä oli ihan hyvä ratkaisu, koska huomasin että en olisi edes tarvinnut globaalia muuttujaa.

      Jäi kuitenkin vähän kaivelemaan että mikä meni vikaan...

      • ai sii

        Pistä koko ohjelmasi tänne, muuten ei selviä.


    • SelväTapaus+1!

      Jokaisen varatun mittaridatan perään pitää varata tila NULlille. NUL on tietokoneen nolla eikä se välttämättä ole yhtäsuuri kuin sinun nollasi

    • mikä vika

      varaa 80 sijaan vaikka 85 paikkaa, toimiiko sitten?

    • väinö_

      Mites tuo muuttuja data on esitelty?

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Mitään järkeä?

      Että ollaan erillään? Kummankin pää on kovilla.
      Ikävä
      119
      1682
    2. Noniin rakas

      Annetaanko pikkuhiljaa jo olla, niin ehkä säilyy vienot hymyt kohdatessa. En edelleenkään halua sulle tai kenellekään mi
      Ikävä
      99
      1498
    3. Lasten hyväksikäyttö netissä - Joka 3. nuori on saanut seksuaalisen yhteydenoton pedofiililtä

      Järkyttävää! Lapsiin kohdistuva seksuaalinen hyväksikäyttö verkossa on yhä pahempi ongelma. Ulkolinja: Lasten hyväksikäy
      Maailman menoa
      37
      943
    4. Multa sulle

      Pyörit 24/7 mielessä, kuljet mun mukana, mielessä kyselen sun mielipiteitä, vitsailen sulle, olen sydän auki, aitona. M
      Ikävä
      29
      879
    5. Kumpi vetoaa enemmän sinuun

      Kaivatun ulkonäkö vai persoonallisuus? Ulkonäössä kasvot vai vartalo? Mikä luonteessa viehättää eniten? Mikä ulkonäössä?
      Ikävä
      38
      831
    6. Nainen, olen tutkinut sinua paljon

      Salaisuutesi ei ole minulle salaisuus. Ehkä teimme jonkinlaista vaihtokauppaa kun tutkisimme toisiamme. Meillä oli kumm
      Ikävä
      50
      796
    7. Mies, eihän sulla ole vaimoa tai naisystävää?

      Minusta tuntuu jotenkin, että olisit eronnut joskus, vaikka en edes tiedä onko se totta. Jos oletkin oikeasti edelleen s
      Ikävä
      43
      758
    8. Olet myös vähän ärsyttävä

      Tuntuu, että olet tahallaan nuin vaikeasti tavoiteltava. En tiedä kauanko jaksan tätä näin.
      Ikävä
      37
      740
    9. Okei nyt mä ymmärrän

      Olet siis noin rakastunut, se selittää. Onneksesi tunne on molemminpuolinen 😘
      Ikävä
      56
      738
    10. Onko sulla empatiakykyä?

      Etkö tajua yhtään miltä tämä tuntuu minusta? Minä ainakin yritän ymmärtää miltä sinusta voisi tuntua. En usko, että olet
      Ikävä
      37
      720
    Aihe