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

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

Πώς να αυξήσετε το μέγεθος του σωρού για τη διαδικασία

Κάθε πρόγραμμα που τρέχει στον υπολογιστή σας χρησιμοποιεί μνήμη . Η «σωρό» είναι η περιοχή της μνήμης που χρησιμοποιείται για την κατανομή δυναμική μνήμη . Σε ένα πρόγραμμα C , τα αντικείμενα που τοποθετούνται στο «σωρό» , και built-in τύπους δεδομένων , όπως ακέραιος και καιρό τοποθετούνται στο "σωρό ". Η στοίβα είναι ένα μικρότερο , πιο γρήγορα περιοχή της μνήμης που εκχωρείται από το τελευταίο in, first out . Στατικές και global μεταβλητές , επίσης, είναι αποθηκευμένες στο " σωρό " και να παραμείνουν στη μνήμη μέχρι να ολοκληρωθεί το πρόγραμμα . Το μέγεθος του σωρού είναι ένας προκαθορισμένος αριθμός των σελίδων? Ωστόσο , περισσότερες σελίδες μπορούν να διατεθούν στο σωρό . Οδηγίες
Η 1

Ge η λαβή για το προεπιλεγμένο heap της διαδικασίας καλώντας στο πρόγραμμά σας χρησιμοποιώντας C " GetProcessHeap . " Ορίστε μια μεταβλητή για να κρατήσει τη λαβή που ονομάζεται " hHandle . " Αν " hHandle " είναι null , αποκαλούν« GetLastError "για να πάρει το μήνυμα αποτυχίας . 2

χρήση " hHandle " , αποκαλούν " HeapAlloc " να εκχωρήσει μνήμη αυτής της διαδικασίας» σωρό . Serialization εξασφαλίζει ότι τα δύο θέματα δεν έχουν πρόσβαση στο ίδιο μπλοκ μνήμης ? Ως εκ τούτου , χρησιμοποιήστε μόνο το " HEAP_NO_SERIALIZE " παράμετρο όταν η εφαρμογή έχει μόνο ένα νήμα ή η εφαρμογή χειρίζεται το δικό νήμα κλήσεις του στο σωρό της μνήμης . Θα πρέπει επίσης να περάσει τον αριθμό των bytes να διαθέσει σε " HeapAlloc . "
Εικόνων 3

Χρησιμοποιήστε " VirtualAlloc " για να κάνετε κράτηση ένα μπλοκ των σελίδων για τη διαδικασία . Μπορείτε να κάνετε επιπλέον κλήσεις σε " VirtualAlloc " να δεσμευτούν μεμονωμένες σελίδες έτσι ώστε να μην καταναλώνουν αποθηκευτικό χώρο έως ότου η διαδικασία εκτελείται χρειάζεται it.To εκχωρήσει μνήμη που προκαθορίζεται στο μηδέν και να επιτρέπει την πρόσβαση ανάγνωσης /εγγραφής με τις ενδιαφερόμενες περιφέρειες από τις σελίδες , Τύπος : DWORD dsize = 468178553 ? VirtualAlloc ( NULL , dsize , MEM_COMMIT , PAGE_READWRITE ) ?
Η
εικόνων

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

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