ich mit einem Problem heute bin vor, wo ich wie 0x 11223344
Speicher zu einem bestimmten Muster zu ändern, so dass der gesamte Speicher aussieht (in hex):Wie memset() Speicher zu einem bestimmten Muster anstelle eines einzelnen Bytes?
1122334411223344112233441122334411223344112233441122334411223344...
ich kann nicht herausfinden, wie man mach es mit memset(), weil es nur ein einzelnes Byte braucht, nicht 4 Bytes.
Irgendwelche Ideen?
Danke, Boda Cydo.
Die eine Sache zu beachten ist, dass' buf' die Ausrichtungsanforderungen für a nicht erfüllen kann 'uint32_t' auf Ihrer Plattform.Wenn' buf' das Ergebnis eines 'malloc' ist, brauchen Sie sich darüber keine Gedanken zu machen, aber wenn es (als Argument) von Code übergeben wird, den Sie nicht kontrollieren, Sie Ich werde die Ausrichtung überprüfen müssen, bevor Sie auf diese Weise auf diese Weise schreiben, sonst führt dies bei einigen zu ungültigen Zugriffen Plattformen. –
Eine andere Sache, auf die man achten muss, ist Endianess, wenn dies auf einem kleinen Endian-Computer ausgeführt wird und das Füllen und Lesen mit Typen mit unterschiedlichen Größen erfolgt (dh Füllen mit int aber Lesen mit char) –
Dies ist nicht sehr effizient; Die Verwendung von 'memmove()' wie in meinem Beispiel ist viel, viel schneller, da es spezielle Assembler-Ops und handoptimierten Code verwendet. –