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 ) ?
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα