Hallo,

Deine Frage ist in einer C - Gruppe sicherlich besser aufgehoben.

Achim Fritz <[EMAIL PROTECTED]> writes:

> Hi,
>
> fuer ein Finite-Element-Programm in C, muesste ich unbedingt mehr als 2Gb
> Speicher allokieren. Der Rechner hat 2Gb Speicher und 2Gb Swap.
> Ich habe erst gedacht, es liegt am Kernel (CONFIG_HIGHMEM ist gesetzt),
> habe jetzt aber festgestellt, dass es nicht moeglich ist in C eine Integer
> zu deklarieren, die groesser als 2^31 ist.

Bezüglich der Größe von Integertypen macht der C - Standard lediglich
folgende Zusicherung:

         char <= short <= int <= long

Die tatsächliche Größe ist Systemabhängig und kann über die
Headerdatei limits.h erfragt werden. 

> [EMAIL PROTECTED]:~/ugspeicher/test-proc> cat testint.c
> #include  <stdlib.h>
>
> int main(void){
>    long long int a=2200000000;
>    int b=2200000000;
>    int c=2000000000;
>    printf("a=%d\n",a);
               ^^^^
Versuch's mal mit printf("a=%lld\n",a); Ein Blick in die manpage von
printf erklärt Dir, warum.

Wenn Du mit noch größeren Zahlen hantieren mußt, als unsigned long
long zu bieten hat, hilft vielleicht eine "bignum" - library wie
libgmp. 

Ob Du nun aber so große Speicherbereiche allozieren kannst, und ob
Dein Programm das wirklich tun muß, bezweifele ich eher. Aber das
gehört definitiv in ein anderes Forum.

Grüße,
Daniel.



-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

Antwort per Email an