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