error allocating memory with realloc(). how can i increase
max_allowed in the system?
det135 at psu.edu
Wed Aug 20 23:34:31 UTC 2008
On Tue, 12 Aug 2008, Jordi Moles Blanco wrote:
>i'm running a FreeBSD 7.0 amd64 machine and struggling with some C code
In addition to the other comments already given, I think that it might
be useful for your learning experience to have some additional comments.
>I've had some trouble with this home-made script as it keeps crashing
>while launching a "realloc()" call.
>I narrowed down the problem and here i'm sending you a short example of
>code that crashes:
> int midataula;
> midataula = 3000;
> char *missatge = (char *)malloc(midataula * sizeof(char));
You should not cast the return value of malloc. 
Recall that malloc() makes no promises about the contents of the memory
allocated. I recommend, in the current style, adding:
> printf("\n\ntaula1: %s",missatge);
> int voltes;
> voltes = 0;
Traditionally in C, all variable declarations appear at the beginning of
the local scope. Declaring new variables mid-scope is valid in certain
off-shoots of C and may be acceptable in newer dialects/standards of the
language, but the majority of C programmers might make certain
assumptions about your code following older traditions.
This certainly is not too egregious, but while I was here, I thought I'd
> midataula = midataula+500;
> realloc(missatge, midataula * sizeof(char));
> printf("\n\ntaula2: %s",missatge);
>this is a full "working" you can compile on your machine.
>Like this... i get "Segmentation fault (core dumped)"
>but if instead of "while(voltes<4)" i use "while(voltes<3)"
>the script works fine with this output:
>so... i guess there must be a limit in the system somewhere.
>I've tried to reset all variables that i've seen in the "sysctl -a" list
>refering to malloc, memory, mem, and so on... but so far i haven't fixed
>i'm running this script as root and in the /etc/login.conf file there's
>only the "default" group with the "unlimited" values.
>A part from that, if i perform a "limit" call, i get this:
>datasize 33554432 kbytes
>stacksize 524288 kbytes
>i've tried to resize datasize and stacksize, but the system won't let me
>any idea how to solve this?
Good luck with your programming and systems work!
More information about the freebsd-questions