Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να κάνει το Dynamic Storage Κατανομή C

Σε πολλές περιπτώσεις , ο χρήστης καθορίζει on the fly αν ένα πρόγραμμα θα επεξεργαστεί μια σειρά από 10 στοιχεία ή 10.000 . Επειδή το μέγεθος του πίνακα είναι γνωστό εκ των προτέρων , θα πρέπει να αναιρέσει τη μνήμη και την απελευθέρωση κατά τη διάρκεια εκτέλεσης του προγράμματος . Αυτή η διαχείριση της μνήμης κατά τη διάρκεια της εκτέλεσης είναι γνωστή στην επιστήμη των υπολογιστών ως δυναμική κατανομή μνήμης . Το άρθρο αυτό επικεντρώνεται στις λειτουργίες αποκλειστικά για δυναμική κατανομή μνήμης σε C. , τι χρειάζεστε
ολοκληρωμένο περιβάλλον ανάπτυξης με C + + Compiler
Βιβλίο για C
προγραμματισμού
Παρουσίαση Περισσότερες οδηγίες
Η 1

Συμπεριλάβετε το αρχείο της βιβλιοθήκης με τους τυπικούς ορισμούς της βιβλιοθήκης . Αυτό είναι το αρχείο " stdlib.h » και περιλαμβάνει , μεταξύ άλλων σημαντικών χαρακτηριστικών C , όλες τις λειτουργίες που εκτελούν δυναμική κατανομή μνήμης . Για να συμπεριλάβετε αυτό το αρχείο της βιβλιοθήκης στο πρόγραμμά σας , εισάγετε την ακόλουθη γραμμή στο επάνω μέρος του αρχείου προέλευσης /κεφαλίδα σας
Παράδειγμα : .
# Include
2

Αποφασίστε τι θέλετε να κάνετε . Στη συνέχεια, επιλέξτε τη λειτουργία από τα ακόλουθα βήματα που ταιριάζει καλύτερα τη δράση της μνήμης κατανομής που θέλετε να εκτελέσετε .
Εικόνων 3

malloc Χρήση ( ) για ένα μπλοκ μνήμης του γνωστού μεγέθους . " Malloc " διαθέτει "μέγεθος" bytes και επιστρέφει ένα δείκτη στην αρχή του μπλοκ
Πρωτότυπο :
void * malloc (μέγεθος size_t ) ?
Παράδειγμα : .
Int i ?
Χαρα * buf ? printf ( " Εισάγετε το μήκος των χορδών : " ) ?
scanf ( "% d" , & i ) ?
buf = ( char * ) malloc ( i +1 ) ?
if ( NULL == buf ) εξόδου ( 1 ) ?
//etc Φτηνές 4

Απασχολούν calloc ( ) για μια σειρά από στοιχεία , όπου κάθε στοιχείο έχει ένα μέγεθος μεγαλύτερο από ένα byte . " Calloc " διαθέτει ένα μεγάλο κομμάτι της μνήμης για το " num " στοιχεία κάθε στοιχείο του είναι το "μέγεθος " bytes σε μήκος . Επιστρέφει ένα δείκτη στην αρχή του μπλοκ
Πρωτότυπο :
void * calloc ( size_t αναμέτρησης , size_t μέγεθος ) ?
Η

Παράδειγμα : .
Int i , n ?
int * Parr ?
printf ( " Εισάγετε τον αριθμό των ακεραίων : " ) ?
scanf ( "% d" , & i ) ?
n = sizeof ( int ) ?
Parr = ( int * ) calloc ( i, n ) ?
if ( NULL == Parr ) εξόδου ( 1 ) ?
//etc
5

Χρησιμοποιήστε realloc ( ) για να αλλάξετε το μέγεθος ενός μπλοκ μνήμης . " Realloc " επεκτείνει ή μειώνει το μπλοκ μνήμης " μέγεθος " bytes ότι " ptr " επεσήμανε
Πρωτότυπο : .
Oid * realloc (void * ptr , size_t μέγεθος ) ?
Παράδειγμα : int
num1 , num2 ? int
* arr = NULL?
κάνει {
printf ( "Εισάγετε ένα θετικό ακέραιο : " ) ?
scanf ( "% d" , & num1 ) ?
ενώ ( 1 > num1 ) ?
arr = ( int * ) calloc ( num1 , sizeof ( int) ) ?
if ( NULL == arr ) εξόδου ( 1 ) ?
κάνει {
printf ( " Εισάγετε ένα ακόμη θετικό ακέραιο : " ) ?
scanf ( "% d " , & num2 ) ?
ενώ ( 1 > num2 ) ?
arr = ( int * ) realloc ( arr , num2 * sizeof ( int ) ) ?
if ( NULL == arr ) εξόδου ( 1 ) ?
//etc
6

Αφήστε ένα μπλοκ μνήμης που εκχωρείται στα βήματα 3 έως 5 με τη χρήση δωρεάν ( ) . "Ελεύθερος" απελευθερώνει το μπλοκ μνήμης που αρχίζει στη θέση μνήμης που " ptr " επεσήμανε
Πρωτότυπο : .
Χωρίς κενά (void * ptr ) ?
Παράδειγμα :
int * buf ?
buf = ( int * ) malloc ( 100 * sizeof ( int ) ) ?
δωρεάν ( buf ) ?
//etc

Η

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα