|
|
|
|
Google Site
|
|||||||
| Φόρουμ | Εγγραφή | Ιστολόγιο | Man Σελίδες | Κανόνες Φόρουμ | Σύνδεσμοι | Λευκώματα | Συχνές ερωτήσεις | Χρήστες | Ημερολόγιο | Αναζήτηση | Η σημερινή Θέσεις | Mark Forums Read |
| Προγραμματισμός Post ερωτήσεις σχετικά με την C, C + +, Java, SQL, και άλλες γλώσσες προγραμματισμού εδώ. |
![]() |
|
|
Εργαλεία Θέματος | Αναζήτηση αυτό το νήμα | Βαθμολογήστε Νήμα | Display Modes |
|
|||
|
Byte Επένδυση
Γεια σου,
Μπορεί κάποιος να εξηγήσει τι είναι byte padding? Για π.χ.: struct EMP ( char s? int β? char s1? int b1? καιρό b3? char s3? ) Ποιο θα είναι το μέγεθος αυτής της δομής; Ευχαριστώ |
| Sponsored Links |
|
|
|
|||
|
Padding η υλοποίηση εξαρτάται. Βασικά αυτό σημαίνει ότι τα αντικείμενα μέσα στο struct έχουν την έναρξή τους διευθύνσεις μετακόμισε (παραγεμισμένο με bytes) τόσο από την έναρξη κάθε αντικείμενο μπορεί να έχει πρόσβαση από το υλικό αποτελεσματικά.
Κακή ευθυγράμμιση των αντικειμένων μπορεί να οδηγήσει σε SIGBUS χωματερή πυρήνα, ή πολύ αργή πρόσβαση στο αντικείμενο. Ορισμένοι μεταγλωττιστές έχουν pragma να απενεργοποιήσετε ή να τροποποιήσουν padding. Άλλοι παρέχει προειδοποιήσεις για παραγέμισμα. |
|
|||
|
για GCC προσπαθούν να καθορίσουν τη δομή σας όπως αυτό:
struct gtpp_hdr6 ( unsigned char σημαία? / / 1 byte unsigned char message_type? / / 1 byte unsigned μικρού μήκους? / / 2 bytes unsigned σύντομη ακολουθία? / / 2 bytes ) __attribute__ ((__packed__))? και ελέγξτε και πάλι. Αυτό το χαρακτηριστικό compiler δείχνει ότι η δομή αυτή χρησιμοποιείται για πακέτα δεδομένων και compiler δεν θα κάνει padding |
|
|||
|
Πράγματι χαμηλό επίπεδο το θέμα του. Επένδυση αποθηκεύει όλα τα δεδομένα στοιχείο ξεκίνησε από ακόμη και τις διευθύνσεις. Σε αυτό το char μηχανισμός λαμβάνει επίσης 2 bytes (ένα Byte αποθηκεύονται σε τρέχουσες ακόμη και τη διεύθυνση, το επόμενο στοιχείο μπορεί να αποθηκεύσει δεδομένα στον επόμενο, ακόμη και τη διεύθυνση, το α / μ παράξενο διεύθυνση είναι σπατάλη). Αλλά βελτιώνει την ανάγνωση των δεδομένων αποτελεσματικότητας.
|
|
|||
|
Ένα πρόγραμμα που δείχνει θέματα παραγέμισμα και τα αντισταθμιστικά οφέλη
Γεια σου,
Όταν εργάζονται σε πολλές client / server καταστάσεις ότι τα δεδομένα που διαβιβάζονται είναι περάσει σε δομών δεδομένων. Είναι σημαντικό να γνωρίζουμε τις ρυθμίσεις παραγέμισμα μεταξύ δύο αρχιτέκτονες, τόσο εδώ είναι ένα πρόγραμμα παράδειγμα που δείχνει πώς μπορείτε να δείτε τα αντισταθμιστικά οφέλη. # περιλαμβάνουν <stdio.h> int main (κενή) ( struct ( char ένα? int i? double d? ) St? printf ( "st μέγεθος:% d \ noffset a:% d \ noffset i:% d \ noffset d:% d \ n", sizeof (st), ((char *) (& st.a)) - ((char *) & st), ((char *) (& st.i)) - ((char *) & st), ((char *) (& st.d)) - ((char *) & st))? ) |
|
||||
|
C compilers σε διαφορετικά συστήματα απλώστε δομές με διαφορετικό τρόπο.
Σε ορισμένες περιπτώσεις, μπορεί ακόμη και να διάταξης διαφορές μεταξύ των διαφόρων Γ μεταγλωττιστές για το ίδιο σύστημα. Μεταφραστές προσθέσετε κενά μεταξύ των τομέων, και αυτά τα κενά έχουν διαφορετικά μεγέθη και είναι σε διαφορετικές τοποθεσίες. Μπορείτε να κανονικά υποθέσουμε ότι δεν υπάρχουν κενά μεταξύ των τομέων του τύπου char ή σειρά char. Ωστόσο, δεν μπορείτε να κάνετε οποιαδήποτε παραδοχές σχετικά με κενά μεταξύ των τομέων κάποιο ευρύτερο τύπο. Μπορείτε, επίσης, δεν μπορεί να κάνει παραδοχές σχετικά με τη διάταξη των τύπων bitfield. (Από autobook 1,5) |
| Sponsored Links |
|
|
![]() |
| Σελιδοδείκτες |
| Εργαλεία Θέματος | Αναζήτηση αυτό το νήμα |
| Display Modes | Βαθμολογήστε αυτό το νήμα |
|
|
Περισσότερα UNIX και Linux Forum Θέματα που μπορεί να σας Χρήσιμη
|
||||
| Νήμα | Thread Starter | Φόρουμ | Απαντήσεις | Τελευταίο μήνυμα |
| Επένδυση με μηδενικά. | sbasetty | Ο προγραμματισμός και η Shell Scripting | 10 | 05-18-2009 08:09 μμ |
| Επένδυση στο Unix | rudoraj | Ο προγραμματισμός και η Shell Scripting | 3 | 02-21-2008 12:06 AM |
| AWK padding και αξίες | kshelluser | UNIX για Ανδρείκελα Ερωτήσεις & Απαντήσεις | 3 | 11-29-2006 05:14 μμ |
| Επένδυση | vijaygopalsk | UNIX για Ανδρείκελα Ερωτήσεις & Απαντήσεις | 2 | 06-27-2003 11:51 AM |
| Επένδυση θέματα | informshilpa | UNIX για Advanced & Expert Χρήστες | 2 | 03-01-2002 01:51 μμ |