Fråga : Fungera som buffert överskridit

Detta en ömt ställe, men tydligt låta ifrågasätter. Om du har en byte 16 att fungera som buffert, hur mycket data kan dig sätter i den, för fungera som buffert överskrider? Jag skulle antar 16 byte, men mig har berättats att denna är lite en kuggfråga. Någon vet? " klar "

Svar : Fungera som buffert överskridit

Ska det nyckel- är stränga är typisk också bekant, som avslutat ogiltigt stränger. Menande, om det har längden av 16 som är artikel med ensamrätt av ett OGILTIGT tecken. För parser behovet typisk att finna den OGILTIGA rödingen, så att den vet att den har kommit till avsluta av stränga och kan fortsätta att göra andra handlingar (det lika trycket som ska avskärmas, etc.). Så tilldelningen av minnet (högen eller bunten), detta bör alltid tas omsorg av av programmerare.

E.g. rödingen stränger [LENGTH+1] eller string_ptr = malloc (LENGTH+1)

Så till överflöd den är enkelt till något att säga som, om du har byte 16 att fungera som buffert, det översätter in i röding stränger [LÄNGDEN] var LÄNGDEN är 16. Så stränga som förväntas för att se till inget överflöd, bör vara ett mindre (e.g. LENGTH-1). Naturligtvis I-förmiddag som antar att bytesamlingen är sannerligen ogiltig avslutad typsamling. Annorlunda det bör vara kontrollen vid häleri fungerar etc. (baserad längd för byte) i kodifierar.

Det finns mer till det sådan överflöd, att det åsidosättanderetur tilltalar och etc. men föreslår att du kan kontrollera ut denna anknyter för godan lästa @ http://en.wikipedia.org/wiki/Buffer_overflow
Andra lösningar  
 
programming4us programming4us