Speicher alloziieren.

Christian Lackas c.lackas at kfa-juelich.de
Tue Apr 29 04:27:00 PDT 2003


Hallo zusammen,

wodurch ist der Speicher den ich anfordern kann eigentlich begrenzt?

Ich würde nämlich eigentlich gerne folgendes Programm erfolgreich
ausführen:

    #include <stdio.h>
    #include <stdlib.h>
    int main() {
        size_t size = 536870912;
        char *a = malloc(size);
        if (a)
            printf("succeded\n");
        else
            perror("error");
    }

Aber es ist mir nicht vergönnt. Ich bekomme immer einen
    error: Cannot allocate memory
Verursacht durch
    break(0x2804b000)   = -1 ENOMEM (Cannot allocate memory)
Und 
    extern char *malloc_options = "X";
erklärt mir nur, dass kein Speicher mehr da sein soll:
    a.out in malloc(): error: out of memory


Die Grenze scheint bei 512 MB zu liegen und dass passt auch zu der
Ausgabe von limits(1):

    Resource limits (current):
    cputime          infinity secs
    filesize         infinity kb
    datasize           524288 kb
    stacksize           65536 kb
    coredumpsize     infinity kb
    memoryuse        infinity kb
    memorylocked     infinity kb
    maxprocesses         5547
    openfiles           11095
    sbsize           infinity bytes
    vmemoryuse       infinity kb

Aber auch ein

    limits -d 1g ./a.out

(als root) bringt nicht den gewünschten Effekt. Wo muss/kann ich hier
drehen, damit mir das System meine Wünsche wieder erfüllt?

Da in meiner login.conf für meinen User bei »datasize« ein »unlimited«
steht ist mir auch nicht ganz klar wo obige 512 MB herkommen. Ist das
irgendein ein hartes Limit?

Auf meiner UltraSparc (Solaris) kann ich fröhlich Speicher anfordern,
ohne das sie mir das übel nimmt.

Gruss
 Christian

-- 
Lächle - morgen wird es schlimmer.
http://www.lackas.net/ Perl Delphi Linux MP3 Searchengines Domainchecker


More information about the freebsd-stable mailing list