Array zurücksetzen auf default

Gast #438031
Lesenswert?

Hallo,

eine Frage, wie kann ich möglichst schnell ein komplettes Array 
"löschen"(d.h. Speicherzelleln auf 0x00 setzen)?

bei der Initialisierung/Deklarierung funktioniert das ja so,

volatile unsigned char data_array[7] ={0,0,0,0,0,0,0};

aber danach?

ist dies die einzige Möglichkeit?

for(i=7;i;i--)
   data_array[i-1] =0;


Danke und Grüße
Gast #438081
Lesenswert?

Danke Rufus,

ich hab mir mal beide Versionen in ASM angesehen, und denke, dass meine 
zugegebener Maßen unelegantere Schneller ist und dazu auch noch ca. 1/3 
kürzer. Das Verhältnis ändert sich natürlich zu meinen Ungunsten, wenn 
ich viele verschiedene Arrays mit verschiedenen Größen und dazu dann 
noch oft rücksetzen möchte.

Gruß
Persönliche Seite #438085
Lesenswert?

Das dürfte stark von der Implementierung von memset abhängen.

Ansonsten könnte Deine Schleife, wenn sie
1
for (i = 0; i < 7; i++)
2
  data_array[i] = 0;
formuliert ist, möglichweise etwas schneller werden, da beim 
Arrayzugriff in der Schleife keine Subtraktion mehr erforderlich ist.

Kann natürlich sein, daß das ein optimierender Compiler selber 
hinbekommt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren