Am Freitag, 29. November 2002 13:57 schrieb Tobias Rittweiler:
> Hello Markus,
>
> ['nschuldigung f�r sp�te Antwort, hatte ne ziemlich stressige Woche]
macht nichts, der mailserver war wieder unten und die Baustelle ist gro� genug ;-)
> Wednesday, November 27, 2002, 3:06:47 AM, you wrote:
>
> MH> Hi
> MH> ich will mir ein Zeiger array vom Typ short definieren.
> MH> die Anzahl der Zeiger wird nat�rlich erst w�hren der Laufzeit des
> Programms MH> erfasst. Die kleinste Einheit ist aber bekannt:
> MH> ein Block hat 64 Elemente.
>
> MH> Pro Makroblock sind es "block_count" * Bl�cke.
> MH> Ein Frame hat " mb_hight*mb_width" Mackrobl�cke.
> MH> in meiner global.h habe ich dct_array so deklariert:
> MH> extern *dct_array[64];
> MH> Initalsieren will ich das Ding so:
> MH> if (!(dct_array[mb_width*mb_height][block_count][64] = (short *)
> malloc(mb_widh*mb_height*block_count*64))) MH> print(" malloc error\n);
>
> MH> m�sste doch OK sein, oder?
>
> Erm, nein! Das Ding muss ein SIGSEGV Signal empfangen!
Macht das System doch selbstst�ndig oder ?
Zumindest bekomme ich gen�gend segvaults :-( hat aber nichts mit dem Fall oben zu tun.
Du hast einen
> Zeiger auf ein Array mit 64 m�glichen Eintr�gen, oder anders
> ausgedr�ckt: Du hast ein dynamisches Array, das Arrays von 64
> Eintr�gen enth�lt.
> Du versuchst aber das ganze dreimal zu derefernzieren, obwohl du's nur
> h�chstens 2mal kannst/darfst.
wieso den dreimal? was meinst du genau mit dereferenzieren?
Ich will das ding einmal allokiert habe und gut is'.
>
> Und auch gibst du malloc() das falsche mit, dein Programm w�rde *sehr
> viel* RAM unn�tig verbrauchen.
Ich brauch viel ram. Das ist mein Framebuffer quasi.
Da muss also schon das ganze Bild reinpassen.
>
> Was genau du willst habe ich nicht so ganz verstanden. Wir haben einen
> Block, die kleinste Einheit, die 64 Eintr�ge enthalten soll. So erste
> Frage: mindestens oder h�chstens 64?
Immer 64 !
> Dann willst du einen Makroblock haben, der block_count Bl�cke
> enthalten soll. Frage: Ist block_count statisch oder dynamisch?
Normalerweise ist der Wert 6 und �ndert sich auf jeden fall nicht w�hrend der
Laufzeit.
>
>
> MH> Wie setze ich alle Werte vor einer Zuweisung auf "0"(null) ?
>
> Hab ich dir doch in der letzten Mail gesagt. Komm doch mal bitte mit
> konkreten Beispielen..
ich mach's zu Fu�: foo_bla[i]=0;
hat zwar den Scharm eines "firtst fuck movies" aber es funzt.
Ich muss mich jetzt sowieso erst mal um die "nicht_regulierende" Pufferregulierung
k�mmern!
Das sieht nach einem echten Schei� aus!
Gru� Markus
und Danke f�r die Tips.
--
-----------------------------------------------------------------------------
Markus Hahn
Emser Stra�e 69a
65195 Wiesbaden
Microsoft merges technologies:
Windows CE + Windows ME + Windows NT = Windows CEMENT
-----------------------------------------------------------------------------
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org