Uonsket plasserings kalkulator

Uonsket plasserings kalkulator

Fa via App Store Les dette innlegget i var app!

Hva skjer nar du initialiserer en soppelpost til noe i C?

Anta at vi har folgende:

Nar jeg endrer soppelprisen til noe annet, betyr det at jeg odelegger minnet eller er denne verdien bokstavelig tull soppel, sa det spiller ingen rolle hvilken ny verdi jeg tilordner det?

Programmet ditt viser udefinert oppforsel som betyr: Bokstavelig talt kan alt skje, og det er fortsatt dekket av standarden som ubestemt. Og nar jeg sier noe, mener jeg det i full grad. Det ville v re like gyldig for datamaskinen din a bli sentient og jage deg nedover gaten.

Vel, det som vanligvis skjer, men det er ikke garantert, er det at du skriver inn i umapportert adresserom (pa et moderne OS med paged memory) som forarsaker en segmenteringsfeil eller en bussfeil (avhengig av arkitektur, OS og kjoretid implementering).

ptr er en enhetlig peker, noe som betyr at pekerens verdi enna ikke skal defineres. En udefinert peker, per definisjon, peker pa ingenting og alt, det vil si ingen gyldig objekt i det hele tatt. Den eneste maten a gjore pekeren gyldig pa, er a tildele adressen til et riktig C-objekt av typen pekeren dereferences til.

BTW: Vanlig C har veldig, veldig strenge skrivregler. Jeg sier noen ganger at den er enda strengere enn C ++, fordi den mangler den implicitte konverteringsoperatoren og funksjonen overbelastning. Men den slurvet typen avstopning og darlige kompilatorer odela sitt rykte med hensyn til type sikkerhet.

Du far tilgang til ugyldige minnesteder som pakaller udefinert oppforsel. Alt kan skje, det kan ikke forutsies.

Siden de fleste C-implementeringer tillater deg a fa tilgang til ugyldige minnesteder, tilordner du faktisk H-verdien til den plasseringen.

Men du kan ikke stole pa hva som skal skje neste. Kanskje ditt program mislykkes, kanskje du odelegger minnet som brukes av et annet program, eller i et multithreaded miljo kan et annet program overskrive den verdien.



Hallo! Vil du spille i det mest populære kasinoet? Vi samlet det for deg. Gå her nå!