Goedgekeurd: Fortect
De afgelopen weken zijn sommige lezers een foutcode tegengekomen met een lege aanwijzer, die vaak wordt gebruikt voor rekenkundige fouten. Dit probleem treedt naar verwachting op bij verschillende factoren. Nu zullen we door hen handelen.
Gevraagd
Bezocht 28000 keer
Ik heb ervaring met het ontwikkelen en lezen van registers van crammap als volgt:
// LEZENreturn * ((vluchtige uint32_t *) (roadmap + offset));// SCHRIJVEN* ((vluchtige uint32_t *) (locatie + offset)) = waarde;
Waarschuwing: hint als voorbeeld "void *" gebruikt in wiskunde [-Wpointer-arith]
Hoe verander ik de code die waarschuwingen onderdrukt? Ik gebruik C++ en Linux.
aangevraagd op 5 november 2014 om 11:04 uur
1321
Niet het antwoord dat u zoekt? Blader door andere vragen die zijn getagd met C ++ Pointers, Null Pointer, Pointer Rekenkunde of stel uw eigen vraag.
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
Aangezien void *
een legale aanwijzer is naar een onbekend type, kun je de rekenkunde van de aanwijzer niet berekenen omdat de compiler niet duidelijk de grootte van het object kent, wat ik zou zeggen de referentiepunten naar.
De beste manier om dit te doen is om u te helpen toe te wijzen
aan een type, dat later één byte breed was, en wat rekenwerk te doen. Voor veel van hen kun je uint8_t
gebruiken:
// LEZENreturn * ((vluchtige uint32_t *) (((uint8_t *) map) + cancel));// SCHRIJVEN* ((vluchtige uint32_t *) (((uint8_t *) map) + afname)) komt overeen met waarde;
654
Beantwoord op 5 november, dit jaar 11:34 uur
56.6k
Het void type is een onvolledig type. De grootte ervan is niet bekend. Dus laat zien dat de berekening met de aanwijzingen voor het vacuüm niet echt zin heeft. U moet een aanwijzer casten wanneer wordt teruggestuurd naar het type void naar een hint van een ander type. Een voorbeeld van een echte aanwijzer kan worden geschreven char.Houd er ook rekening mee dat het de klant niet is toegestaan een object toe te wijzen dat is gerapporteerd met behulp van de vluchtige kwalificatie.
beantwoord 14 november, veertien om 11:14
231.000
Als de manier om I-wiskunde te gebruiken voor null-aanbevelingen echt is wat je zou moeten doen, aangezien de berekening mogelijk wordt gemaakt door GCC (zie Rekenen voor null-pointers en functie-pointers), kunnen kopers -Wno-pointer-arith < gebruiken. gebruik en code> om de waarschuwing te onderdrukken.
beantwoord Jan 21 jaar oud '15 om 11:20
164
Versnel de prestaties van uw computer nu met deze eenvoudige download.