Μετάβαση στο κύριο περιεχόμενο
Υποστήριξη
Είσοδος με Microsoft
Είσοδος ή δημιουργία λογαριασμού.
Γεια σας,
Επιλέξτε διαφορετικό λογαριασμό.
Έχετε πολλούς λογαριασμούς
Επιλέξτε τον λογαριασμό με τον οποίο θέλετε να εισέλθετε.

Συμπτώματα

Εξετάστε το ακόλουθο σενάριο.

  • Μπορείτε να δημιουργήσετε μια εφαρμογή η οποία φορτώνει ένα byte από μια δομή ή από μια κλάση στο Microsoft Visual Studio 2008 Service Pack 1 (SP1).

  • Ενεργοποιήστε την επιλογή βελτιστοποίησης /Ox ή την επιλογή βελτιστοποίησης /O2 .

  • Μεταγλώττιση της εφαρμογής, χρησιμοποιώντας μια ρύθμιση παραμέτρων έκδοσης για την x64 πλατφόρμα.

Σε αυτό το σενάριο, η απόσταση που δημιουργείται για να αποκτήσετε πρόσβαση στο μέλος δομή ή το μέλος της κλάσης είναι εσφαλμένη.

Αυτό το ζήτημα παρουσιάζεται μόνο όταν το μέγεθος της δομής και η μετατόπιση ή το μέγεθος της κλάσης και η μετατόπιση ισούται με ένα από τα ακόλουθα ζεύγη:

  • (14,13)

  • (15,13)

  • (22,21)

  • (23,21)

  • (30,29)

  • (31,29)

Προτεινόμενη αντιμετώπιση

Πληροφορίες άμεσης επιδιόρθωσης

Μια υποστηριζόμενη άμεση επιδιόρθωση είναι τώρα διαθέσιμη από τη Microsoft. Ωστόσο, προορίζεται για τη διόρθωση μόνο του ζητήματος που περιγράφεται σε αυτό το άρθρο. Eφαρμόστε τη μόνο σε συστήματα που αντιμετωπίζουν το συγκεκριμένο ζήτημα. Αυτή η επείγουσα επιδιόρθωση ενδέχεται να υποβληθεί σε πρόσθετο έλεγχο. Επομένως, εάν αυτό το ζήτημα δεν σας επηρεάζει ιδιαίτερα, σας συνιστούμε να περιμένετε έως το επόμενο Visual Studio 2008 service pack που περιέχει αυτήν την επείγουσα επιδιόρθωση.

Για να επιλύσετε αυτό το ζήτημα αμέσως, επικοινωνήστε με υπηρεσίες υποστήριξης πελατών της Microsoft για να αποκτήσετε την επείγουσα επιδιόρθωση. Για μια πλήρη λίστα αριθμών τηλεφώνου υπηρεσίες υποστήριξης πελατών της Microsoft και πληροφορίες σχετικά με το κόστος υποστήριξης, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:

http://support.microsoft.com/contactus/?ws=supportΣημείωση Σε ειδικές περιπτώσεις, οι χρεώσεις που υφίστανται κανονικά για κλήσεις υποστήριξης ίσως ακυρωθούν εάν ο επαγγελματίας υποστήριξης της Microsoft κρίνει ότι μια συγκεκριμένη ενημερωμένη έκδοση θα επιλύσει το ζήτημά σας. Οι συνηθισμένες χρεώσεις υποστήριξης θα ισχύει για πρόσθετες ερωτήσεις υποστήριξης και για θέματα που δεν αφορούν τη συγκεκριμένη ενημερωμένη έκδοση.

Προϋποθέσεις

Πρέπει να έχετε το Visual Studio 2008 Service Pack 1 για να εφαρμόσετε αυτήν την επείγουσα επιδιόρθωση.

Απαίτηση επανεκκίνησης

Δεν χρειάζεται να κάνετε επανεκκίνηση του υπολογιστή μετά την εφαρμογή αυτής της άμεσης επιδιόρθωσης.

Πληροφορίες αντικατάστασης άμεσης επιδιόρθωσης

Αυτή η επείγουσα επιδιόρθωση δεν αντικαθιστά άλλες επείγουσες επιδιορθώσεις.

Πληροφορίες αρχείων

Η αγγλική έκδοση αυτής της άμεσης επιδιόρθωσης έχει τα χαρακτηριστικά αρχείου (ή νεότερα χαρακτηριστικά αρχείου) που παρατίθενται στον παρακάτω πίνακα. Οι ημερομηνίες και οι ώρες για τα αρχεία αυτά αναφέρονται σε Συντονισμένη παγκόσμια ώρα (UTC). Όταν προβάλλετε τις πληροφορίες του αρχείου, μετατρέπεται σε τοπική ώρα. Για να βρείτε τη διαφορά μεταξύ της ώρας UTC και της τοπικής ώρας, χρησιμοποιήστε την καρτέλα Zώνη ώρας στο στοιχείο Hμερομηνία και ώρα " στον πίνακα ελέγχου.

Όνομα αρχείου

Έκδοση αρχείου

Μέγεθος αρχείου

Ημ/νία

Ώρα

Πλατφόρμα

C2.dll

15.0.30729. 4082

2,283,320

19-Μαρ-2009

05:13

x86

C2.dll

15.0.30729.4082

2,36 1,656

19-Μαρ-2009

05:13

x86

C2.dll

15.0.30729.4082

3,01 7,528

19-Μαρ-2009

05:13

x64

Link.exe

9.0.30729.4082

1,0 54,520

19-Μαρ-2009

05:13

x64

Link.exe

9.0.30729.4082

799, 032

19-Mar-2009

05:13

x86

Εναλλακτικός τρόπος αντιμετώπισης

Για να επιλύσετε αυτό το ζήτημα, προσθέστε ένα ή περισσότερα μέλη ψεύτικο "χωρίς υπογραφή χαρακτήρας" για να επεκτείνετε το μέγεθος της δομής ή της κλάσης στο μικρότερο πολλαπλάσιο των οκτώ byte. Για παράδειγμα, μπορείτε να επεκτείνετε bytes 14 έως 16 byte.

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα των προϊόντων της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Περισσότερες πληροφορίες

Για περισσότερες πληροφορίες σχετικά με την ορολογία των ενημερώσεων λογισμικού, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο στη Γνωσιακή Βάση της Microsoft:

824684 περιγραφή της βασικής ορολογίας που χρησιμοποιείται για την περιγραφή ενημερωμένων εκδόσεων λογισμικού της Microsoft

Βήματα για την αναπαραγωγή του προβλήματος

  1. Δημιουργία μιας εφαρμογής που ονομάζεται Test.cpp, χρησιμοποιώντας τον ακόλουθο κώδικα στο Visual Studio 2008 SP1:

    typedef struct DskDecimal
    {
    unsigned char precision;
    unsigned char scaleFactor;
    unsigned short value[ 5];
    unsigned char maxPrecision;
    unsigned char maxScaleFactor;
    } DskDecimal;

    int main()
    {
    DskDecimal decimal;
    decimal.maxScaleFactor = 4;
    DskDecimal self = decimal;
    return self.maxScaleFactor;
    }
  2. Η μεταγλώττιση της εφαρμογής χρησιμοποιώντας την ακόλουθη εντολή:

    CL test.cpp /O2 /MD

Το αναμενόμενο αποτέλεσμα είναι 4. Ωστόσο, το πραγματικό αποτέλεσμα είναι 0.

Χρειάζεστε περισσότερη βοήθεια;

Θέλετε περισσότερες επιλογές;

Εξερευνήστε τα πλεονεκτήματα της συνδρομής, περιηγηθείτε σε εκπαιδευτικά σεμινάρια, μάθετε πώς μπορείτε να προστατεύσετε τη συσκευή σας και πολλά άλλα.

Οι κοινότητες σάς βοηθούν να κάνετε και να απαντάτε σε ερωτήσεις, να δίνετε σχόλια και να ακούτε από ειδικούς με πλούσια γνώση.

Σας βοήθησαν αυτές οι πληροφορίες;

Πόσο ικανοποιημένοι είστε με τη γλωσσική ποιότητα;
Τι επηρέασε την εμπειρία σας;
Πατώντας "Υποβολή" τα σχόλια σας θα χρησιμοποιηθούν για τη βελτίωση των προϊόντων και των υπηρεσιών της Microsoft. Ο διαχειριστής IT θα έχει τη δυνατότητα να συλλέξει αυτά τα δεδομένα. Δήλωση προστασίας προσωπικών δεδομένων.

Σας ευχαριστούμε για τα σχόλιά σας!

×