Mikä on null, onko se 0?

Hermot menee

Ärsyttää lukea kun tästä väitellään ja selitellään, asia on kuitenkin näin:
Tietokone näkee tasan kaksi tilaa, sähköt ON, sähköt OFF, kun viitataan muisti osoitteeseen on arvo 1-64 bittiä, (yleisesti) riippuen prosessorista, käyttöjärjestelmä varaa muistin käyttäen 4-8 tavun osoitinta jolla osoitetaan keskusmuistiin, Muistia ei voi vapauttaa, ainut muistin vapautus tapahtuu sulkemalla virta koneesta, joten käytetään 0-osoitinta kerrotakseen, että tämä alue on vapaa ylikirjoittaa, muisti (ram) voidaan ajaa nollaksi, mutta se ei tarkoita että tämä muistialue olisi vapaa käyttää, siksi muistin osoitin, eli osoite muistiin jonne/jota vapautetaan/luetaan/kirjoitetaan merkitään nollaksi, tällöin kyseinen muistialue on niin sanotusti null, eli vapaa varattavaksi ja käytettäväksi.

11

337

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • linkattu lista

      Opetttelepa dynaaminen muistinvaraus linkatulla listalla:
      http://edu.phkk.fi/opiskelu/mattij/c/dynaamiset.htm

      Linkatun listan tietorakenteeeseen voidaan lisätä alkioita, poistaa alkioita (ja vapauttaa muistia), tyhjentää (vapauttaa) koko lista, tai siirtää alkioita listasta toiseen. Tai tehdä linkattuja listoja linkatuista listoista.
      NULL viittaa näissä yleensä linkatun listan alkuun (pAlku=NULL) tai loppumerkkiin )pUUsi->pNextr=NULL), malloc ja free komentoja ttarvitaan..

    • Malloc Freeman

      "Muistia ei voi vapauttaa, ainut muistin vapautus tapahtuu sulkemalla virta koneesta,"

      Kyllä voidaan esim. C:ssä mallocilla varattu muisti ja vapautus free-käskyllä.

      "joten käytetään 0-osoitinta kerrotakseen, että tämä alue on vapaa ylikirjoittaa,"

      Ei toimi. Mutta jos ohjelmointi kielessä on roskienkeruu, niin silloin *näennäisesti* toimii. Tällöinkin tosiasiassa kieli automaattisesti (koodarin "selän takana") varaa muistia malloc:illa ja vapauttaa roskienkeruu-systeemillä free-käskyä käyttäen (tai vastaavilla jos ei käytä C:llä).

      Taidat sekoittaa roskienkeruukielet ja käyttöjärjestelmältä suoraan muistia varaavat kielet.

    • niin___

      NULL on toteutustapaspesifinen makro, joka laajennetaan null-osoitinvakioksi, eli käytännössä void-tyyppinen osoitin jonka arvo on 0. Lunttasin tosta: http://people.freebsd.org/~green/c9x-draft.txt ... Monta hauskaa ongelmaa ratkeaa, kun katsoo standardia. En ymmärrä miksi ne yleensä opettaa koulussa aina ensimmäiseksi C:tä. Ketä kiinnostaa tietää, että pointtereille on määritelty vähennyslasku, mutta yhteenlasku johtaa määrittelemättömään käyttäytymiseen. Hieno perinne, tai jotain... Mutta opetettavat asiat menis ehkä paremmin perille jollain vähemmän nippelitietoa vaativalla työkalulla. Arvaa oikein, ja korjaa harjoitusohjelma toimivaksi :D

    • Muistia voidaan varata ja vapauttaa, ja niin pitääkin tehdä ennen kuin sinne kirjoitetaan. Pitäähän se johonkin kirjata ylös mitkä alueet muistista on käytössä ja mitkä ei.. Null tarkoittaa määrittelemätöntä, tyhjää tai merkityksetöntä arvoa. Se ei siis ole sama kuin 0.

    • nillitys jatkuu

      Alloc/ReAlloc/Free, 3 tosi asiaa on varata vapaata tilaa, varata edelliseen nähden lisää, jolloin vain näennäisesti osoitetaan uuteen avaruuteen, vapaututtaa varattu tila, ei nollata kuitenkaan muistia vaan tila, mistä ihmeestä revitte tätä paskaa jota tänne syydätte, jos suoraan muistiin kirjoittaa null on aivan sama onko siellä vaikka mitä, järjestelmän "linkkitauluun" kun taasen lyödään null, on muisti vapaa joko alloc/reallloc käskylle, mutta se helvetin null on tasan 0-byte arvo siellä listauksissa, uskokaa tai antakaa assylla screenshot windows/x puolelta jossa oikeaoppisesti näin ei ole..

      En ymmärrä miksi tästä aina väitellään, jos muuta mieltä niin todisteet mukaan.

      • nillitys yhä

        Korjaus: ReAlloc myös edelliseen nähden voidaanvarata vähemmän, jolloin tosiasiassa muisti vapautetaan tai merkitään varatuksi (harvoin).

        M-KAR
        " Null tarkoittaa määrittelemätöntä, tyhjää tai merkityksetöntä arvoa. Se ei siis ole sama kuin 0"

        M-KAR kerro minulle millä tavun lukuarvolla koneelle osoitetaan NULL, kerro myös miksi kun olet niin oikeassa ja annappa vielä natiivi c-ohjelma jossa ilman 0 (nolla) merkkiä, ilman null-merkkiä vapautat, sallit muistin yliajoon, eipä onnistu..


      • nillitys yhä kirjoitti:

        Korjaus: ReAlloc myös edelliseen nähden voidaanvarata vähemmän, jolloin tosiasiassa muisti vapautetaan tai merkitään varatuksi (harvoin).

        M-KAR
        " Null tarkoittaa määrittelemätöntä, tyhjää tai merkityksetöntä arvoa. Se ei siis ole sama kuin 0"

        M-KAR kerro minulle millä tavun lukuarvolla koneelle osoitetaan NULL, kerro myös miksi kun olet niin oikeassa ja annappa vielä natiivi c-ohjelma jossa ilman 0 (nolla) merkkiä, ilman null-merkkiä vapautat, sallit muistin yliajoon, eipä onnistu..

        Se lukuarvo voi olla mitä tahansa. Riippuu ympäristöstä. Ohjelmoija ei käsittele sitä millään numerona vaan NULL:na.


      • nillittäjä_

        ootko vielä päissäs?


      • Malloc Freeman

        "En ymmärrä miksi tästä aina väitellään, jos muuta mieltä niin todisteet mukaan."

        Sinähän tässä väität jotain (mistä ei oikein saa edes selvää), joten todisteet pitäisi sinun esittää.

        Testasin C-ohjelmalla, joka varaa muistia 100 megaa ja kirjoittaa sen roskaa täyteen, jonka jälkeen asettaa poitterin nollaksi. Tulos: muisti ei vapaudu.
        (Huom. sinne muistiin pitää kirjoittaa oikeasti jotain, muuten se ei varaa todellista keskusmuistia.)

        Mikäli ymmärsin oikein, niin väitit että muisti vapautuu kun asettaa poitterin nollaksi, tuo ohjelma osoitti väitteesi vääräksi.

        (En laita koodia tänne, koska jokainen osaa tuollaisen väsätä itse.)


    • NULL on sopimus

      NULL on tietokoneen nolla, joka voi olla ihmiselle vaikka 123.456. Kuitenkin ihminen voi keskustella tasan nollasta tietokoeen kanssa kertomalla tietokoneelle, että nyt on puhe nollasta eli NULL: ista

      • Nollaa ei tiedetä

        Myös eri tietokoneet voivat sujuvasti keskustella keskenään nollasta, vaikka niillä olisi täysin eri mielipide nollan paikasta lukualueessa. Kertomalla muille tietokoneille, että nyt on puhe nollasta eli NULL: ista mikä tahana tietokonekin voi olla varma siitä, että kaikki muut tietokoneetkin ymmärtävät, että niittenkin pitää katsoa omaa nollaansa eli NULL: ia, joka on multiuniversaali eli tarkoittaa samaa kaikissa tietokoneuniversumeissa eli kaikkissa mahdollisissa lukualueissa, joissa nollan paikka voi olla missä tahansa. Tämä on jo siitäkin syystä järkevää, ettei edes ihmiskunnalla ole täysin selvää käsitystä siitä, mikä nolla itseasiassa on. Tämä ilmenee siinä, että heti, kun joku matemaatikoistamme lausuu nollasta jotain uutta ja järkevää, hänelle myönnetään matematiikan Nobel-palkinto.


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

    Luetuimmat keskustelut

    1. Ensitreffit Jenni laukoo viinilasin ääressä suorat sanat Jyrkin aikeista: "Mä sanoin, että älä"

      Voi ei… Mitä luulet: kestääkö Jennin ja Jyrkin avioliitto vai päättyykö eroon? Lue lisää: https://www.suomi24.fi/viihde
      Ensitreffit alttarilla
      26
      2778
    2. Ymmärrän paremmin kuin koskaan

      Roikut kädessäni ja vedät puoleesi. Näen kuitenkin tämän kaiken lävitse ja kaikkien takia minun on tehtävä tämä. Päästän
      Tunteet
      29
      2312
    3. 148
      2264
    4. Hullu liikenteessä?

      Mikä hullu pyörii kylillä jos jahti päällä? Näitä tosin kyllä riittää tällä kylällä.
      Kiuruvesi
      53
      2190
    5. Niina Lahtinen uudessa elämäntilanteessa - Kotiolot ovat muuttuneet merkittävästi: "Nyt on...!"

      Niina, tanssejasi on riemukasta seurata, iso kiitos! Lue Niinan haastattelu: https://www.suomi24.fi/viihde/niina-lahti
      Suomalaiset julkkikset
      21
      1802
    6. Kun Venäjä on tasannut tilit Ukrainan kanssa, onko Suomi seuraava?

      Mitä mieltä olette, onko Suomi seuraava, jonka kanssa Venäjä tasaa tilit? Ja voisiko sitä mitenkään estää? Esimerkiks
      NATO
      389
      1662
    7. Ano Turtiainen saa syytteet kansankiihoituksesta

      Syytteitä on kolme ja niissä on kyse kirjoituksista, jotka hän on kansanedustaja-aikanaan julkaissut Twitter-tilillään
      Maailman menoa
      98
      1597
    8. Pyhäinpäivän aamua

      Oikein hyvää huomenta ja rauhallista päivää. ❄️😊🥱☕❤️
      Ikävä
      298
      1485
    9. Varokaa! Lunta voi sataa kohta!

      Vakava säävaroitus Lumisadevaroitus Satakunta, Uusimaa, Etelä-Karjala, Keski-Suomi, Etelä-Savo, Etelä-Pohjanmaa, Pohjanm
      Maailman menoa
      13
      1419
    10. Kunta ostaa kivitipun

      Kunnanjohtajan tuleva uusi ostokohde
      Lappajärvi
      133
      1418
    Aihe