On Fri, Nov 29, 2002 at 08:44:56PM +0100, Hartwig Atrops wrote:
> Hallo.
> 
> On Friday 29 November 2002 19:26, you wrote:
> > Tobias Rittweiler <[EMAIL PROTECTED]> writes:
> > > Hello Christopher,
> > >
> > > Wednesday, November 27, 2002, 8:13:33 AM, you wrote:
> > >>> Wie setze ich alle Werte vor einer Zuweisung auf "0"(null) ?
> > >
> > > CR> benutze zmalloc  =>> z=Zero=0
> > > CR> :)
> > >
> > > Kenn ich nicht. Nach welchem Standard soll diese Funktion denn
> > > existieren?
> >
> > Das macht doch calloc(3), oder?
> >
> > Jochen
> 
> Also wir verwenden palloc ...
> 
> ... was ein ziemlich grausiger Wrapper auf eine PSOS-Funktion ist.
> 
> Also im Ernst. Da hilft ein Blick in den Kernighan/Ritchie. 

Oder halt einfach

    $ man malloc

..wenn die Bibel gerad mal nicht zur Hand ist.

> Die Antwort 
> lautet in der Tat calloc, der so bestellte Speicherbereich wird zu Null 
> initialisiert. malloc initialisiert dagegen nicht.

Genau.
man 3 calloc:

    #include <stdlib.h>
    void *calloc(size_t nmemb, size_t size);

    BESCHREIBUNG
        calloc() belegt Speicher f�r ein Array von nmemb Elementen
        von  jeweils size  Byte  und  gibt  einen  Zeiger  auf  den
        belegten Speicherbereich zur�ck.  Der Speicher wird auf Null
        gesetzt.

Mit den zwei Parametern sieht es eigentlich wie geschaffen aus
f�r deine Aufgabe.
Das nur mal als Hinweis, dass guter Rat in Linux meist keinen
Mausklick weit entfernt ist... ;)

Ansonsten k�nntest du, Markus, wirklich mal mit mehr Details
rausr�cken, so machts ja irgendwie keinen Spass, �ber eine L�sung
machzudenken.
Weil da was von DCT stand und 64(8x8)-short-Bl�cken tippe ich auf
irgendwas mit jpeg... aber eigentlich w�re es dann eher float,
nicht short  AFAIR.
Wer hat eine bessere Idee? Wettem werden noch angenommen.

Wenn du einen Haufen Daten hast mit mehreren Dimensionen ist es
oft am einfachsten, nur mir einem flachen Zeiger zu arbeiten und
den Offset auf die Segmente/Bl�cke �ber den Index zu berechnen. 

Oder was mit typedef, das macht die Sache deutlich
�bersichtlicher...

#define BLK_SIZE 64

typdef  short           DCT_TYPE;
typedef short[BLK_SIZE] DCT_BLOCK;
typedef DCT_BLOCK*      DCT_DATA;

Und dann so was wie

    DCT_DATA data = cmalloc( size, BLK_SIZE);
    
    data [ m-ter Block ] [ n-tes Ding im Block m ] = ... 

oder was weiss ich. ;)

    Bj�rn
    
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an