The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > High Level Programmering
.
google unix.com



High Level Programmering Post spørsmål om C, C + +, Java, SQL og andre programmeringsspråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Hvilken Base Level Filesets nødvendig med en bestemt program? cypher82 UNIX for Advanced & ekspertbrukere 4 05-29-2008 09:07
Hjelp trengs om c-programmet dwgi32 High Level Programmering 2 11-19-2007 10:44
Rare ting om FSs og VGS mhenryj AIX 4 11-13-2007 04:42
Rare resultater med awk amatheny Shell programmering og Skripting 2 11-01-2007 06:12
Rare Systemmelding?? lesstjm UNIX for Dummies Spørsmål og svar 6 01-04-2002 10:01

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Registrert bruker
  
 

Bli Dato: november 2007
Innlegg: 18
Takk

Takk fyrene for t-inngang.

Vel n1, jeg tenkte på lignende linjer. Tok det et skritt videre, siden j ble tildelt 15 bytes, selv om jeg inn en buffer på si 20 (utgangspunktet> 15), programmet ikke stoppe.

Nå antar tht k poeng til noen plassering på / rundt plass avsatt til j, hvorfor virker de ovennevnte vilkår ikke forårsake en oversvømmelse og forårsake et SEGV?

Burde SEGV oppstå når programmet tilgang noen minne utenfor sin tildelte plass? (si gyldig / ugyldig addessses)

Også jeg merke tht før en sprintf på 'k', sin verdi var en gang at stdout, og en gang av strengen i sprintf. Så kanskje disse behandles som gyldige adresser og innenfor programmet grensene?

BTW, jeg kom opp med de ovennevnte scenario ved et uhell når eksperimentere noe. Også, jeg vet sikkert hva jeg gjør er ulovlig, men perplexes meg når det funker!
  #2 (permalink)  
Old 11-14-2007
porter porter is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2007
Innlegg: 2965
Sitat:
Originally Posted by karthikb23 View Post
Burde SEGV oppstå når programmet tilgang noen minne utenfor sin tildelte plass? (si gyldig / ugyldig addessses)
Det er en implementering detalj hvordan strenge dette er noen arkitekturer mai bare kalle opp virtuelt minne og legge den til dine arbeider stille, spesielt hvis OS tenker du bare utvide stabelen.

Også ulike arkitekturer er strengere enn andre hensyn (a) skriver over koden områder (b) feiljustert tilgang.
  #3 (permalink)  
Old 11-14-2007
DreamWarrior DreamWarrior is offline
Registrert bruker
  
 

Bli Dato: Oct 2003
Innlegg: 70
Har du prøvd utskrift ut innholdet i "j" når den finnes? Siden introduksjonen av "j" er hva som forårsaker SEGV å stoppe da jeg ville gjette innholdet påvirke utfallet.

Alle er så fokusert på 'k', har jeg ennå å se noen nevner 'i'. Den sprintf må gå gjennom alt innholdet 'i' peker til og avgir det til "k". Jeg mistenker at "J" og "Jeg har mer en sammenheng enn" J "og" k ".

Hvis jeg måtte ta en gjetning, 'j' (hvis den finnes) har, på et punkt, en null Terminator ( '\ 0') innenfor det og 'i' er (på et tidspunkt før SEGV) kjører inn i Innholdet i "j". Dette, selvfølgelig, begrenser mengden av "søppel" kan du både lese og stokk i unreferenced 'k' og dermed lessens potensial til å SEGV.

Ta 'j' ute av bildet og sprintf åpenbart går inn i et område av minnet, bør det ikke. Min gjetning, mens sprintf er traversing 'i' enten du overflyt i pokker ut av "k", fordi det ikke er null Terminator i minnet for en stund eller det ikke er null Terminator før sprintf får inn i teksten segment og OS liker ikke det brudd på data segmentet.

Jeg ville teste min teori, men AIX kjerner uavhengig av tilstedeværelse av "j".
  #4 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Registrert bruker
  
 

Bli Dato: november 2007
Innlegg: 18
kan være, men når jeg skrives ut innholdet i j var det "" (selvfølgelig, som det er en dum).
Men kanskje det kan være litt søppel i 15 bytes fordeles.
Som u nevnt, bør det dump core begge ganger.

Dessuten liker porter nevnes det er opp til OS når / hvor mye det skal være strenge.
  #5 (permalink)  
Old 11-15-2007
n1djs n1djs is offline
Registrert bruker
  
 

Bli Dato: november 2007
Innlegg: 12
En SEGV per definisjon mener, du prøver å skrive til et segment utenfor minne allokert til deg. I det første tilfellet, du hadde ingen lagringsplass tildeles bare pekepinner, så den første skriver du fikk SEGV. Den andre er vanskeligere å oppdage en feil. Så lenge du skriver til noen minne allokert til deg, vil du ikke få en SEGV. Ditt tips bare skje for å peke på allokert minne, i dette tilfelle j [] tegn array. Skrive nok ting der, og du får en SEGV det også, når du faller av på slutten av allokert minne. Kompilatoren og kjøring libs aner ikke om du ønsker å peke på allokert minne, eller hvor i den tildelte minnet du vil punkt, med pekere. Så lenge du peker på allokert minne, kjøretidsdetaljene, vil ikke utstede en SEGV (Du er ikke skriftlig utenfor tildelt minne)
  #6 (permalink)  
Old 11-15-2007
porter porter is offline Forum Advisor  
Registrert bruker
  
 

Bli Date: Jan 2007
Innlegg: 2965
Vanligvis stabler er forlenget med segment brudd, i stedet for å fordele en diger stabel til en prosess, setter den vakten sider under det, og når du snubler de det vokser bunken.
  #7 (permalink)  
Old 11-16-2007
DreamWarrior DreamWarrior is offline
Registrert bruker
  
 

Bli Dato: Oct 2003
Innlegg: 70
Sitat:
Originally Posted by karthikb23 View Post
kan være, men når jeg skrives ut innholdet i j var det "" (selvfølgelig, som det er en dum).
Men kanskje det kan være litt søppel i 15 bytes fordeles.
Som u nevnt, bør det dump core begge ganger.

Dessuten liker porter nevnes det er opp til OS når / hvor mye det skal være strenge.
Du ville si "åpenbart" men "åpenbart" alle de andre pekerne bør settes til NULL i tillegg. Skriv til NULL bør føre SEGV .... Men hvis det er "så det er en del av hvorfor eksistensen av 'j' er som hindrer deg fra SEGV. Fordi mens sprintf er traversering strengen 'i' for å dumpe innholdet i 'k', treffer det umiddelbart NULL Terminator og begrenser skaden gjort. Ganske muligens den "skaden" gjort ligger helt innenfor tildelte stabelen og aldri SEGVs. Uansett, du clobbering ting du bør ikke.

Dessuten er jeg ikke sikker på at en SEGV (per definisjon) er alltid grunn til skriver. Det er en tekst og data-segmentet, og jeg vil tro at et forsøk på å lese teksten segmentet kan også føre til SEGV i enkelte operativsystemer.
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er PÃ¥
Smilefjes er PÃ¥
[IMG] koden PÃ¥
HTML-koden Av
Pingbacks er PÃ¥
Refbacks er PÃ¥




Alle klokkeslett er GMT -4. NÃ¥ er klokken 07:57.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0