Zuweisung mehrerer Arrays desselben Typs

8

Ich muss mehrere Arrays desselben Typs und derselben Form zuordnen. Am Anfang habe ich so etwas wie gemacht:

%Vor%

Um zu vermeiden, dass malloc und free mehrere Male aufgerufen werden, habe ich das obige in

geändert %Vor%

Das scheint in Ordnung zu sein (in dem Sinne, dass sich die Funktionen im realen Fall genauso verhalten), aber ich frage mich, ob das immer noch C-Code ist (undefiniertes Verhalten?), und ob ich diese Methode erweitern kann zu komplexen Daten (Arrays von Strukturen, etc.).

    
michaelmeyer 31.01.2014, 08:26
quelle

3 Antworten

3

Es ist in C absolut gültig. Aber vergessen Sie nicht, nur den a Zeiger freizugeben. Ihre Methode ähnelt struct hack

Ich denke jedoch, ein logisches Problem in diesem Code ist, dass, wenn Sie außerhalb der Grenzen für a1 oder a2 gehen, Sie es nicht bemerken werden, da Sie auf gültige Speicheradressen zugreifen werden, dh Sie werden nicht erhalten Seg Fehler.
Im ersten Fall können Sie jedoch "SegFault" erhalten und Ihren Fehler bemerken.

    
Don't You Worry Child 31.01.2014, 08:31
quelle
3

Beide sind gültig, da Sie malloc verwenden, um zusammenhängenden Speicher zuzuweisen. Tatsächlich wird Code, der in der Form dem zweiten Fall ähnlich ist, häufig verwendet, wenn Matrizen in C modelliert werden.

Es ist erwähnenswert, dass

%Vor%

ist undefiniertes Verhalten, da Sie nicht erwarten können, dass die Stapelzuordnung zusammenhängend ist.

    
Bathsheba 31.01.2014 08:30
quelle
2

Es ist absolut gültig.

Was Sie tun, ist im Wesentlichen das Gleiche:

%Vor%

mit dem Unterschied, dass die Berechnungen hier mit Pointer- und Array-Arithmetik durchgeführt werden.

    
glglgl 31.01.2014 08:55
quelle

Tags und Links