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

460

    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. Nainen kokki autossa kammottavan kuoleman sähköauto-Teslan syttyessä tuleen.

      https://www.is.fi/autot/art-2000011652873.html Näin vaarallisia sähköautopalot voivat olla.
      Maailman menoa
      84
      5157
    2. Persuja ei aluevaltuustoissa näy

      Ei tunnu persuja paljon paikalliset asiat kiinnostavan, vaan ainoastaan ulkomaalaiset, joku Israel ja Trumpin fanitus.
      Maailman menoa
      25
      3480
    3. Päivän Riikka: Uudenkaupungin autotehdas hiljeni

      Näin ne 100 000 uutta pysyvää ei-tempputyötä yksityiselle sektorille tämän hallituksen ansiosta syntyy. Työntekijöille j
      Maailman menoa
      38
      2828
    4. Riikka vie Suomen kohta ykköseksi työttömyyskisassa

      Espanja: 10,5 % Suomi: 10,3 % Ruotsi: 9,3 % Kisa on tiukkaa, mutta Riikalla hyvä draivi päällä. Vasemmistolaisen päämin
      Maailman menoa
      9
      1972
    5. Kerro kaivattusi nimi tai nimikirjaimet

      🌠 Tähdenlento! Kirjoittamalla kaivattusi nimen tai nimikirjaimet tähän, saattaa toiveesi toteutua.
      Ikävä
      58
      1820
    6. Miksi pitäisit enemmän

      Minusta kuin siitä toisesta?
      Ikävä
      47
      1586
    7. Alkuvuodesta poistuu työttömyyskorvaus kaikilta joilla on säästössä rahaa

      Tippuu korvaukselta iso määrä työttömiä.
      Maailman menoa
      263
      1476
    8. Mitä meidän välillä

      Tulee tapahtumaan vai tuleeko mitään?
      Ikävä
      94
      1382
    9. Tämmönen höpsö

      Höpönassu mä olen. En mikään erikoinen…hölötän välillä ihan levottomia. Tykkäisit varmasti jos olisin siellä sun vieress
      Suhteet
      44
      1356
    10. Hiljaisuus

      Tarkoittaa välinpitämättömyyttä, henkistä väkivaltaa ja kiusaamista. Olet valinnut hiljaisuuden.
      Ikävä
      73
      1078
    Aihe