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