Re: How to detect that memory over 4G isn't available ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 16, 2010 at 12:49, Paul Chavent <paul.chavent@xxxxxxxx> wrote:
> Hi.
>
> I have a class with ctor that initialise members.
> If i instanciate an array of that class that spread on >= 4G i have a
> segfault.
> Is it a bug (kernel, gcc, my app) ?
> What do you suggest for avoiding this please ?

Maybe tou could test the availability of memory.  See man 2 getrlimit:

       #include <sys/time.h>
       #include <sys/resource.h>

       int getrlimit(int resource, struct rlimit *rlim);

           struct rlimit {
               rlim_t rlim_cur;  /* Soft limit */
               rlim_t rlim_max;  /* Hard limit (ceiling for rlim_cur) */
           };

       RLIMIT_AS
              The maximum size of the process's virtual memory
(address space) in bytes.  This limit affects calls to brk(2),
mmap(2)  and  mremap(2),  which
              fail  with  the error ENOMEM upon exceeding this limit.
Also automatic stack expansion will fail (and generate a SIGSEGV that
kills the process
              if no alternate stack has been made available via
sigaltstack(2)).  Since the value is a long, on machines with a 32-bit
long either this  limit
              is at most 2 GiB, or this resource is unlimited.

HTH

-Tom

Thomas M. Browder, Jr.
Niceville, Florida
USA


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux