Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Pilarna i förklaringarna nedan beskriver förhållanden mellan variabler och
- // adresser och är alltså inte operatorn -> i C++
- int numBikes = 3;
- /* variabelnamn minnesutrymme
- * ################ ################
- * # numBikes # -> # 3 #
- * ################ ################
- * tilldelning av en vanlig variabel.
- */
- int* numCars = NULL;
- /* variabelnamn minnesutrymme
- * ################ ################
- * # numCars # -> # NULL #
- * ################ ################
- * En pekarvariabel.
- * Det är god sed att sätta en oanvänd pekare till NULL.
- */
- numCars = new int;
- /* variabelnamn: minnesutrymme: 0x12345678:
- * ################ ################ ################
- * # numCars # -> # 0x12345678 # -> # #
- * ################ ################ ################
- * Nu tilldelas pekaren numCars värdet 0x12345678 som den får av new.
- * new ber operativsystemet om en bit ledigt minne. Operativsystemet sätter en
- * bit minne åt sidan och ger sedan adressen till den biten minne till new som
- * new sedan returnerar. Den adressen tilldelas här till numCars. Då minnet som
- * vi precis fått adressen till kan ha använts till vad som helst så har vi
- * ingen aning om vad som finns där.
- */
- *numCars = 5;
- /* variabelnamn: minnesutrymme: 0x12345678:
- * ################ ################ ################
- * # numCars # -> # 0x12345678 # -> # 5 #
- * ################ ################ ################
- * med hjälp av * jobbar vi mot 0x12345678 istället för numCars.
- */
- delete numCars;
- /* variabelnamn: minnesutrymme:
- * ################ ################
- * # numCars # -> # 0x12345678 #
- * ################ ################
- * Minnesutrymmet med adressen 0x12345678 kan nu användas till ngt annat av
- * operativsystemet. delete säger till operativsystemet att 0x12345678 inte
- * används längre. Operativsystemet kan nu tilldela 0x12345678 till ngt helt
- * annat, kanske t o m till ett helt annat program.
- *
- * Observera att då pekaren fortfarande har adressen till minnesutrymmet så går
- * det att läsa och skriva till den. Operativsystemet skriker dock till då och
- * du får upp ett fel som säger att du skrivit/läst där du inte får
- * läsa/skriva.
- *
- * Om man kör delete på pekaren igen så "smäller" det. Operativsystemet kommer
- * säga: "Den där biten minne har du inte tillgång till. Alltså kan du inte
- * säga att du är klar med den där biten minne. Någonting har gått snett.
- * Varsågod här får du ett felmeddelande".
- */
- numCars = NULL;
- /* variabelnamn: minnesutrymme:
- * ################ ################
- * # numCars # -> # NULL #
- * ################ ################
- * Genom att tilldela pekaren NULL så "smäller" det inte när man kör delete på
- * pekaren. Om pekaren är NULL och delete körs på den ignoreras det. Man kan då
- * även göra test på pekaren för att se om den används eller ej. Har man inte
- * gjort till vana att alltid sätta pekare till NULL när de inte används har
- * man ingen aning om vilka pekare som används och vilka som inte används. Gör
- * därför till vana att alltid sätta pekare till NULL.
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement