minneshantering pekare tentafrågor

En samling av tentafrågor och viktiga begrepp inom minneshantering och pekare i programmering, anpassad för universitetsstudenter i Sverige.

Alma67·64 flashcards·64 frågor
universitetcomputer_scienceprogramming
0
Kan
1 / 64
0
Övar
Framsida

Vad är en pekare?

Tryck för att vända
Baksida

En pekare är en variabel som lagrar minnesadressen till en annan variabel.

Tryck för att vända
Kan
Övar fortfarande

Quiz(64 frågor)

Fråga 1 av 64

1. Vad beskriver bäst vad statisk allokering innebär?

Begrepp i det här studiesetet(64)

Pekare och deras grundläggande funktioner(16)

Vad är en pekare?

En pekare är en variabel som lagrar minnesadressen till en annan variabel.

Hur deklarerar man en pekare?

För att deklarera en pekare används asterisk (*). Exempel: int *ptr;

Sant eller falskt: Pekare kan peka på vilket datatyper som helst.

Sant. Pekare kan peka på alla datatyper, inklusive användardefinierade typer.

Vad är pekarens roll i dynamisk minnesallokering?

Pekare används för att referera till minnesblock som allokerats dynamiskt, exempelvis via malloc.

Fyll i blank: För att få värdet som pekas på av en pekare, använd ____.

de-referensoperatorn (&) eller *ptr.

Vad gör operatorn '&'?

Operatorn '&' används för att hämta minnesadressen av en variabel.

Ge ett exempel på pekarars användning.

För att skicka stora datatyper till funktioner utan att kopiera dem, exempel: void func(int *ptr);

Jämför pekare och referenser i C++.

Pekare kan vara null och kan ändras, medan referenser alltid måste referera till ett giltigt objekt och kan inte ändras.

Vad är en nullpekare?

En nullpekare är en pekare som inte pekar på något giltigt minnesområde.

Sant eller falskt: Att använda pekare förbättrar prestanda.

Sant. Pekare minskar overhead genom att undvika kopiering av stora datamängder.

Vad är en pekararray?

En pekararray är en array där varje element är en pekare till en variabel eller datatyp.

Hur kan man allokera minne för en pekare?

Med funktionen malloc, exempel: int *ptr = (int*)malloc(sizeof(int));

Fyll i blank: För att frigöra minne som pekas på av pekare, använd ____.

free(ptr);

Vad gör operatorn '->'?

Operatorn '->' används för att komma åt medlemmar i en struktur via en pekare.

Ge ett exempel på en pekarfunktion.

Exempel: void increment(int *p) { (*p)++; }

Vad händer vid pekaröverföring till funktion?

Funktionen kan ändra värdet på den variabel pekaren refererar till, inte bara en kopia.

Minneshanteringstekniker(16)

Vad är statisk allokering?

Minnesutrymme tilldelas vid kompilering. Ingen förändring under körning.

Vad är dynamisk allokering?

Minnesutrymme tilldelas vid körning. Användning av funktioner som malloc() i C.

Fördelar med statisk allokering?

Snabbare åtkomst, enklare minneshantering, mindre risk för fragmentering.

Nackdelar med dynamisk allokering?

Ökad komplexitet, risk för minnesläckor och fragmentering.

Vad är heap-minne?

Dynamiskt minnesområde där minnesblock allokeras och frigörs vid behov.

Vad är stack-minne?

Minnesområde som används för lokal variabelallokering. Automatiskt frigjort.

Skillnad mellan stack och heap?

Stack: automatiskt, kortlivat | Heap: manuellt, långlivat.

Hur fungerar malloc()?

Tilldelar ett block av minne på heapen. Retunerar en pekare till blocket.

Exempel på dynamisk allokering i C.

int *arr = malloc(10 * sizeof(int));

Vad är minnesfragmentering?

Oanvändt minnesutrymme som uppstår vid upprepade allokeringar och frigöringar.

Vad är free() i C?

Frigör minne tidigare allokerat av malloc(). Förhindrar minnesläckor.

Vad är gränser för statisk allokering?

Begränsad av kompilatorn och tillgängligt minne. Ingen dynamisk förändring.

Är statisk allokering snabbare än dynamisk?

Sant. Statisk allokering är snabbare pga förutsägbarhet vid kompilering.

Vad är en minnespool?

En teknik för effektiv minneshantering genom återanvändning av minnesblock.

Fill in the blank: ____ används för att allokera minne på stacken.

Variabler (lokala variabler).

Orsak → Effekt: Överflöd av dynamisk allokering?

Effekt: Ökad risk för minnesläckor och programkrascher.

Felhantering och säkerhet(16)

Vanliga pekarfel?

Null pekare, dangling pekare, minnesläckor, och felaktig allokering.

Vad är en dangling pekare?

En pekare som pekar på ett minnesområde som har frigjorts.

Hur kan man förhindra minnesläckor?

Använd smarta pekare som std::unique_ptr i C++ eller RAII-principer.

True or False: Null pekare orsakar alltid programkrascher.

False. De kan orsaka krascher, men kan hanteras med kontroller.

Fyll i blank: En pekare utan värde är en ______.

null pekare.

Vad händer vid försök att använda dangling pekare?

Oväntat beteende eller programkrasch kan inträffa.

Skillnad mellan pekare och referenser?

- Pekare kan vara null. - Referenser måste alltid peka på ett giltigt objekt.

Hur kan man säkerställa säkerhet med pekare?

Använd gränskontroller, smarta pekare och undvik direkt minnesmanipulation.

Exempel på felaktig minnesallokering?

Försök att frigöra minne som inte har allokerats.

Vad är Buffer Overflow?

När data skrivs utanför avsett minnesområde, vilket kan leda till säkerhetsproblem.

Orsak → Effekt: Null pekare användning?

Orsak: Försök att dereferenciera. Effekt: Programkrasch.

Hur kan man identifiera minnesläckor?

Använd verktyg som Valgrind eller AddressSanitizer för att upptäcka läckor.

Vad är en smart pekare?

En pekare som automatiskt hanterar minneslagring och frigör minne.

Skillnad mellan malloc och new?

- malloc: Ingen konstruktion av objekt. - new: Allokerar och konstruerar objekt.

Vad är en minnesadress?

En unik identifierare för en position i datorns minne.

Vad gör 'delete' i C++?

'delete' frigör minnet som en pekare pekar på.

Avancerade pekare och datastrukturer(16)

Vad är en länkad lista?

En datastruktur bestående av noder där varje nod pekar på nästa. - Dynamisk storlek - Enkel att infoga/ta bort

Skillnad mellan enkel och dubbel länkad lista?

Enkel: pekar på nästa nod. Dubbel: pekar på både nästa och föregående nod.

Vad används pekare i trädstrukturer för?

Pekare används för att navigera mellan noder. Varje nod pekar på sina barn, vilket möjliggör hierarkisk struktur.

Sann eller falsk: Länkade listor kan inte ha en storlek.

Sann. Länkade listor har dynamisk storlek, växer och krymper vid behov.

Fyll i: I en ___________ pekar varje nod på nästa och föregående nod.

dubbel länkad lista.

Vad är en binär trädstruktur?

En struktur där varje nod har högst två barn. - Används för effektiv sökning.

Ge exempel på ett användningsområde för länkade listor.

Implementering av köer och stackar där dynamisk storlek är fördelaktig.

Vad är en nod i en trädstruktur?

En enhet som innehåller data och pekare till dess barn. - Grundläggande byggblock.

Skillnad mellan träd och graf?

Träd: hierarkisk struktur utan cykler. Graf: kan ha cykler och flera anslutningar.

Vad är en pekare till pekare?

En variabel som lagrar adressen till en annan pekare. - Används för mer komplexa strukturer.

Hur implementeras en stack med länkade listor?

Genom att använda en länkad lista där toppnoden representerar stackens topp. - Push och pop operationer.

Vad är preorder-traversering?

En metod för att besöka noder i ett träd: Rot → Vänster → Höger.

Sann eller falsk: Träd är alltid balanserade.

Falsk. Träd kan vara obalanserade vilket påverkar prestanda vid sökning.

Nämn en fördel med trädstrukturer.

Effektiv sökning och sortering av data. - Bättre än arrayer i vissa fall.

Exempel på trädtyp?

Binärt sökträd: varje nod har högst två barn, vänster barn < förälder < höger barn.

Vad är en cirkulär länkad lista?

En cirkulär länkad lista är en länkad lista där den sista nodens nästa pekare pekar tillbaka på den första noden, vilket skapar en cirkulär struktur. - Används för att implementera ringbuffertar. - Effektiv för att navigera genom listan utan slut.

Frågor i det här studiesetet(64)

1. Vad beskriver bäst vad statisk allokering innebär?

A.Minnesutrymme tilldelas vid kompilering.
B.Minnesutrymme tilldelas vid körning.
C.Minnesutrymme kan förändras under körning.
D.Ingen minneshantering sker.

2. Vad lagrar en pekare?

A.Minnesadressen till en variabel
B.Värdet av en variabel
C.En funktion
D.En konstant

3. Vilken av följande är en typ av pekarfel?

A.Null pekare
B.Data typ
C.Loop
D.Variabel

4. Vad är en cirkulär länkad lista?

A.En länkad lista där den sista nodens nästa pekare pekar tillbaka på den första noden.
B.En länkad lista där varje nod har ett unikt ID.
C.En länkad lista med en fast storlek.
D.En lista som enbart kan innehålla heltal.

5. Vilken funktion används för att allokera minne dynamiskt i C?

A.malloc()
B.free()
C.sizeof()
D.exit()

6. Vilken operator används för att deklarera en pekare?

A.&
B.*
C.->
D.@

7. Vad händer om en pekare pekar på minne som har frigjorts?

A.Programmet kraschar
B.Inga problem uppstår
C.Det leder till dangling pekare
D.Det frigör minnet igen

8. Vad används en pekare till pekare för?

A.För att referera till en annan pekare och skapa mer komplexa datastrukturer.
B.För att lagra en konstant variabel.
C.För att skapa en statisk array.
D.För att undvika minnesläckor.

9. Vilken av följande är en fördel med dynamisk allokering?

A.Flexibilitet att ändra storleken på minnesutrymmet.
B.Snabbare åtkomst än statisk allokering.
C.Mindre risk för minnesläckor.
D.Automatisk minnesfrigöring.

10. Sant eller falskt: En pekare kan peka på flera olika datatyper samtidigt.

A.Sant
B.Falskt
C.Beroende på implementering
D.Endast i C++

11. Vilket alternativ beskriver bäst hur man kan förhindra minnesläckor?

A.Använda globala variabler
B.Använda smarta pekare
C.Öka minnesstorleken
D.Använda statiska variabler

12. Vad är en binär sökträd?

A.En struktur där varje nod har högst två barn och vänster barn är mindre än föräldern.
B.En struktur där varje nod kan ha ett obegränsat antal barn.
C.En lista som är ordnad i stigande ordning.
D.En länkad lista med en fast storlek.

13. Vad kännetecknar stack-minne?

A.Minnet frigörs automatiskt.
B.Minnet allokeras dynamiskt.
C.Minnet har en lång livslängd.
D.Minnet är fördelat över flera processer.

14. Vad används en pekare för inom dynamisk minnesallokering?

A.Att lagra konstantdata
B.Att referera till allokerat minne
C.Att skapa funktioner
D.Att deklarera variabler

15. True or False: En null pekare orsakar alltid en programkrasch.

A.True
B.False
C.Bara ibland
D.Beror på kompilatorn

16. Skillnaden mellan enkel och dubbel länkad lista är?

A.En enkel länkad lista pekar bara på nästa nod, medan en dubbel länkad lista pekar på både nästa och föregående nod.
B.En enkel länkad lista kan bara innehålla heltal, medan en dubbel kan innehålla olika datatyper.
C.En enkel länkad lista kräver mer minne än en dubbel länkad lista.
D.En enkel länkad lista kan bara traverseras framåt.

17. Vad är en nackdel med statisk allokering?

A.Ingen möjlighet att ändra storlek.
B.Högre risk för minnesläckor.
C.Ökad komplexitet.
D.Långsam hastighet.

18. Fyll i blank: För att hämta värdet som pekas på av en pekare, använd ____.

A.&
B.*
C.->
D.sizeof

19. Fyll i blank: En pekare utan värde kallas en ____.

A.null pekare
B.dangling pekare
C.smarta pekare
D.lokal pekare

20. Vad är preorder-traversering?

A.En metod för att besöka noder i ordningen Rot → Vänster → Höger.
B.En metod för att besöka noder i ordningen Vänster → Höger → Rot.
C.En metod för att besöka noder i slumpmässig ordning.
D.En metod för att besöka noder i ordningen Höger → Vänster → Rot.

21. Vilket påstående stämmer om heap-minne?

A.Minnet måste frigöras manuellt.
B.Minnet frigörs automatiskt.
C.Minnet används enbart för lokala variabler.
D.Minnet är alltid tillgängligt.

22. Vad gör operatorn '&'?

A.Hämtar värdet av en variabel
B.Hämtar minnesadressen av en variabel
C.Allokerar minne
D.Frigör minne

23. Vad händer om man försöker använda en dangling pekare?

A.Programmet körs som vanligt
B.Oväntat beteende eller programkrasch
C.Det frigör minnet två gånger
D.Det skapar en ny pekare

24. Vad är en nod i en trädstruktur?

A.En enhet som innehåller data och pekare till dess barn.
B.En konstant som lagrar ett heltal.
C.En typ av array som lagrar flera värden.
D.En funktion som skapar ett träd.

25. Vad innebär minnesfragmentering?

A.Oanvända minnesblock som uppstår vid allokering och frigöring.
B.Överflödet av minnesanvändning.
C.En form av minnesallokering.
D.Ingen påverkan på programmet.

26. Vad är en nullpekare?

A.En pekare som pekar på en variabel
B.En pekare utan ett giltigt minnesområde
C.En pekare som alltid är aktiv
D.En pekare till en konstant

27. Vilken av följande är en skillnad mellan pekare och referenser?

A.Pekare kan vara null
B.Referenser kan vara null
C.Pekare är alltid lokala
D.Referenser kan ändras

28. Vad är en länkad lista?

A.En datastruktur bestående av noder där varje nod pekar på nästa.
B.En struktur med en fast storlek som lagrar data i sekventiell ordning.
C.En typ av array som kan ändra storlek.
D.En struktur som bara kan innehålla heltal.

29. Vad gör free()-funktionen i C?

A.Frigör tidigare allokerat minne.
B.Allokerar nytt minne.
C.Kopierar data till ett annat minne.
D.Ingen funktion i C.

30. Vilken av följande påståenden om pekare är FALSK?

A.Pekare kan vara null
B.Pekare kan peka på vilken datatyp som helst
C.Pekare kan ändras efter deklaration
D.Pekare kan inte peka på strukturer

31. Hur kan man säkerställa säkerhet vid användning av pekare?

A.Använda direkt minnesmanipulation
B.Undvika gränskontroller
C.Använda gränskontroller och smarta pekare
D.Öka minneskapaciteten

32. Skillnaden mellan träd och graf är?

A.Träd är hierarkiska och har inga cykler, medan grafer kan ha cykler och flera anslutningar.
B.Träd kan ha obegränsad storlek, medan grafer är begränsade.
C.Träd kan endast innehålla noder av ett datatypsformat.
D.Träd är alltid balanserade, medan grafer kan vara obalanserade.

33. Vad är skillnaden mellan stack och heap?

A.Stack är automatiskt frigjort, heap är manuellt.
B.Heap är alltid snabbare än stack.
C.Stack används för globala variabler.
D.Heap är för loopvariabler.

34. Vad är en pekararray?

A.En array av heltal
B.En array där varje element är en pekare
C.En pekare till en array
D.En array av funktioner

35. Vilket av följande är ett exempel på felaktig minnesallokering?

A.Frigöra minne som har allokerats
B.Öka en pekare
C.Frigöra minne som aldrig har allokerats
D.Tilldela minne med 'new'

36. Vad är en stack?

A.En datastruktur som följer LIFO-principen (Last In, First Out).
B.En datastruktur som följer FIFO-principen (First In, First Out).
C.En typ av array som är ordnad.
D.En länkad lista med statisk storlek.

37. Vilken typ av allokering används för att skapa en minnespool?

A.Dynamisk allokering.
B.Statisk allokering.
C.Automatisk allokering.
D.Ingen allokering.

38. Hur kan man allokera minne för en pekare?

A.Med funktionen realloc
B.Med funktionen malloc
C.Man behöver inte allokera minne
D.Genom att använda en array

39. Vad är ett buffer overflow?

A.Skrivning av data inom korrekt minnesområde
B.Skrivning av data utanför avsett minnesområde
C.Allokering av för mycket minne
D.Frigöring av fel minnesadress

40. Vad används pekare i trädstrukturer för?

A.För att navigera mellan noder och skapa hierarkiska relationer.
B.För att lagra data i sekventiell ordning.
C.För att optimera minnesanvändningen.
D.För att skapa cykler i strukturen.

41. Vilket påstående är FALSKT om statisk allokering?

A.Det kan utgöra en säker risk för programmet.
B.Minnesstorleken kan ändras vid körning.
C.Det är snabbare än dynamisk allokering.
D.Det tilldelas minne vid kompilering.

42. Fyll i blank: För att frigöra minne som pekas på av en pekare, använd ____.

A.malloc
B.free
C.dealloc
D.release

43. Orsak och effekt: Vad händer vid användning av en null pekare?

A.Orsak: Pekaren är tom. Effekt: Programmet kraschar.
B.Orsak: Pekaren pekar på data. Effekt: Ingen effekt.
C.Orsak: Pekaren är giltig. Effekt: Programmet fungerar.
D.Orsak: Pekaren är lokal. Effekt: Programmet stänger av sig.

44. Vad är skillnaden mellan en stack och en kö?

A.En stack följer LIFO-principen, medan en kö följer FIFO-principen.
B.En stack är alltid balanserad, medan en kö kan vara obalanserad.
C.En stack kan endast lagra heltal, medan en kö kan lagra olika datatyper.
D.En stack är alltid större än en kö.

45. Vad är en lokal variabel?

A.En variabel som allokeras på stacken.
B.En variabel som allokeras på heapen.
C.En variabel utan scope.
D.En global variabel.

46. Vad gör operatorn '->'?

A.Hämtar minnesadressen
B.Kommer åt medlemmar i en struktur via en pekare
C.Allokerar minne
D.Frigör minne

47. Hur kan man identifiera minnesläckor?

A.Genom att använda Valgrind
B.Genom att öka minneskapaciteten
C.Genom att undvika pekare
D.Genom att använda statiska variabler

48. Vad är en fördel med trädstrukturer?

A.Effektiv sökning och sortering av data.
B.Enkel implementation av arrays.
C.Bättre hantering av statiska listor.
D.Mindre minnesanvändning i alla fall.

49. Vad händer om minne inte frigörs efter användning?

A.Det kan leda till minnesläckor.
B.Inga konsekvenser.
C.Programmet körs snabbare.
D.Det frigörs automatiskt i framtiden.

50. Ge ett exempel på en pekarfunktion.

A.int add(int a, int b)
B.void increment(int *p)
C.void display()
D.int main()

51. Vad är en smart pekare?

A.En pekare som alltid är null
B.En pekare som automatiskt hanterar minneslagring
C.En pekare som alltid är lokal
D.En pekare som inte kan ändras

52. Vad är en graf?

A.En datastruktur som kan ha cykler och flera anslutningar mellan noder.
B.En struktur som alltid är balanserad.
C.En typ av statisk array.
D.En länkad lista med begränsad storlek.

53. Vad är ett exempel på en funktion som inte frigör minne?

A.malloc()
B.free()
C.realloc()
D.strncpy()

54. Vad händer vid pekaröverföring till funktion?

A.Funktionen får en kopia av värdet
B.Funktionen kan ändra värdet på variabeln pekaren refererar till
C.Inga ändringar kan göras
D.Endast adressen ändras

55. Vilken är skillnaden mellan malloc och new?

A.malloc: Allokerar minne. new: Allokerar och konstruerar objekt.
B.malloc: Konstruktionsmetod. new: Ingen allokering.
C.malloc: Ingenting. new: Konstruerar objekt.
D.Båda gör samma sak.

56. Vad används en kö för?

A.För att hantera data i ordning av ankomst (FIFO).
B.För att hantera data i omvänd ordning (LIFO).
C.För att optimera trädstrukturer.
D.För att lagra data i en statisk array.

57. Vad är en av anledningarna till att använda dynamisk allokering?

A.För att optimera minnesanvändningen.
B.För att göra kod enklare.
C.För att öka hastigheten på programmet.
D.För att eliminera alla minnesproblem.

58. Vilken är en fördel med att använda pekare?

A.De tar mer minne
B.De kan peka på ingenting
C.De minskar overhead genom att undvika kopiering av stora datamängder
D.De gör programmet långsammare

59. Vad gör 'delete' i C++?

A.Allokerar minne
B.Frigör minnet som pekaren pekar på
C.Kopierar minnesinnehåll
D.Skapar en ny pekare

60. Exempel på en trädtyp är?

A.Binärt sökträd där varje nod har högst två barn.
B.En cirkulär länkad lista med oändlig storlek.
C.En array som innehåller heltal.
D.En enkel länkad lista med fasta noder.

61. Vilket av följande påståenden beskriver bäst vad heap-minne används till?

A.För att allokera minne dynamiskt under körning.
B.För att lagra lokala variabler.
C.För att lagra statiska variabler.
D.För att lagra konstantdata.

62. Vilken av följande påståenden beskriver korrekt en pekare?

A.En pekare lagrar minnesadressen till en variabel.
B.En pekare är en funktion som returnerar ett värde.
C.En pekare kan bara peka på heltal.
D.En pekare används endast för att lagra strängar.

63. Vilket av följande påståenden om dangling pekare är korrekt?

A.De kan orsaka oväntat beteende
B.De är alltid ofarliga
C.De kan inte uppstå i C++
D.De kan automatiskt repareras av kompilatorn

64. Vilken av följande påståenden om cirkulära länkade listor är falsk?

A.Den sista nodens nästa pekare pekar på den första noden.
B.Cirkulära länkade listor kan vara dubbelriktade.
C.De tillåter effektiv traversering i båda riktningar.
D.Cirkulära länkade listor kan inte vara tomma.

Relaterade studieset

Skapa ditt eget studieset

Ladda upp en PDF, klistra in dina anteckningar eller beskriv ett ämne – AI genererar flashcards, quiz och mer på några sekunder.