Sponsored Content
Full Discussion: Array size
Top Forums Programming Array size Post 5916 by rwb1959 on Sunday 26th of August 2001 07:29:05 PM
Old 08-26-2001
limits on array sizes

The answer is No and Yes. Theoretically,
there is no limit. However, the kernel may be
configured to allow only a limited amount
of memory per process and/or user. You can find
out what the system resource limits are on your
particular UNIX system using the system
call "getrlimit()" (man section 2). The following
C program can be compiled and run as any ordinary
user...

================== SNIP ========================
/*
* Filename - getlimits.c
*
* Description - display system resource limits and
* test allocating large blocks of memory.
*
*/

#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

main(int argc, char **argv)
{
struct rlimit rlim;
void *p;

getrlimit(RLIMIT_CPU, &rlim);
printf("CPU: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_FSIZE, &rlim);
printf("FSIZE: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_DATA, &rlim);
printf("DATA: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_STACK, &rlim);
printf("STACK: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_CORE, &rlim);
printf("CORE: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#ifdef LINUX
getrlimit(RLIMIT_RSS, &rlim);
printf("RSS: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_NPROC, &rlim);
printf("NPROC: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#else
getrlimit(RLIMIT_VMEM, &rlim);
printf("VMEM: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
getrlimit(RLIMIT_AS, &rlim);
printf("AS: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#endif
getrlimit(RLIMIT_NOFILE, &rlim);
printf("NOFILE: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#ifdef LINUX
getrlimit(RLIMIT_MEMLOCK, &rlim);
printf("MEMLOCK: cur - %ld max - %ld\n", rlim.rlim_cur, rlim.rlim_max);
#endif

if((p = malloc(100000000)) == NULL)
{
printf("malloc 100M failed\n");
}
else
{
printf("malloc 100M succeeded\n");
}
if(p) free(p);
if((p = malloc(500000000)) == NULL)
{
printf("malloc 500M failed\n");
}
else
{
printf("malloc 500M succeeded\n");
}
if(p) free(p);
return 0;
}

================== SNIP ========================

The output (on Linux) should look somthing like...

$ getlimits
CPU: cur - 2147483647 max - 2147483647
FSIZE: cur - 2147483647 max - 2147483647
DATA: cur - 2147483647 max - 2147483647
STACK: cur - 8388608 max - 2147483647
CORE: cur - 1024000000 max - 2147483647
RSS: cur - 2147483647 max - 2147483647
NPROC: cur - 2048 max - 2048
NOFILE: cur - 1024 max - 1024
MEMLOCK: cur - 2147483647 max - 2147483647
malloc 100M succeeded
malloc 500M succeeded
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

MAX SIZE ARRAY Can Hold it

Hi, Do anyone know what's the max size of array (in awk) can be store before hit any memory issue. Regards (3 Replies)
Discussion started by: epall
3 Replies

2. Shell Programming and Scripting

Size of an array in sh shell script

Is there a way to find out the size of an array in sh shell script? Thanks. (1 Reply)
Discussion started by: trivektor
1 Replies

3. Solaris

command to find out total size of a specific file size (spread over the server)

hi all, in my server there are some specific application files which are spread through out the server... these are spread in folders..sub-folders..chid folders... please help me, how can i find the total size of these specific files in the server... (3 Replies)
Discussion started by: abhinov
3 Replies

4. Programming

size of char array in c

i have to store a data more than 100000. i don't know the size of the data whether it may be 100000 or 1000000. so how can i define variable size; example char abc; but i don't know the size so how can i give array size?? in one sentence how can i give the array size dynamically so that i... (6 Replies)
Discussion started by: phani_sree
6 Replies

5. Programming

CHAR Array - stuffed with values - with more size than it holds

Hi All I am simulating a problem in the production where i faced a situation. Please find the following example program which i simulated. #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char str1; (3 Replies)
Discussion started by: dhanamurthy
3 Replies

6. Shell Programming and Scripting

The scripts not able to make the file to size 0, every times it go back to its original size

#!/bin/sh ########################################################################################################## #This script is being used for AOK application for cleaning up the .out files and zip it under logs directory. # IBM # Created #For pdocap201/pdoca202 .out files for AOK #1.... (0 Replies)
Discussion started by: mridul10_crj
0 Replies

7. Shell Programming and Scripting

Use Awk and Array to get total size of files

Hello all, I need to do scripts total up the size in selected extension file for example motion.mov and segmentation.avi is in Label Media. For file info.doc and calc.xls in Label Document. I need output will be like this: count 1 Media,,2 GB count 2 Document,,4 GB My problem is,... (16 Replies)
Discussion started by: sheikh76
16 Replies

8. UNIX for Advanced & Expert Users

Physical disk IO size smaller than fragment block filesystem size ?

Hello, in one default UFS filesystem we have 8K block size (bsize) and 1K fragmentsize (fsize). At this scenary I thought all "FileSytem IO" will be 8K (or greater) but never smaller than the fragment size (1K). If a UFS fragment/blocksize is allwasy several ADJACENTS sectors on disk (in a ... (4 Replies)
Discussion started by: rarino2
4 Replies

9. Programming

Php number array from max, min, step size mysql data

I want to create a form with data values in a dropdown list. The values in the dropdown list need to be generated on the fly from max, min and increment values contained in a mysql database. Hopefully this makes sense, I really have no idea where to start :confused: Thanks (6 Replies)
Discussion started by: barrydocks
6 Replies

10. Shell Programming and Scripting

Array size in C shell scripting

Hi, I would like to know how to define the size of the array in c shell scripting. (15 Replies)
Discussion started by: gopishrine
15 Replies
MALLOC(3)						     Library Functions Manual							 MALLOC(3)

NAME
malloc, free, realloc, calloc, alloca - memory allocator SYNOPSIS
char *malloc(size) unsigned size; free(ptr) char *ptr; char *realloc(ptr, size) char *ptr; unsigned size; char *calloc(nelem, elsize) unsigned nelem, elsize; char *alloca(size) int size; DESCRIPTION
Malloc and free provide a general-purpose memory allocation package. Malloc returns a pointer to a block of at least size bytes beginning on a word boundary. The argument to free is a pointer to a block previously allocated by malloc; this space is made available for further allocation, but its contents are left undisturbed. Needless to say, grave disorder will result if the space assigned by malloc is overrun or if some random number is handed to free. Malloc maintains multiple lists of free blocks according to size, allocating space from the appropriate list. It calls sbrk (see brk(2)) to get more memory from the system when there is no suitable space already free. Realloc changes the size of the block pointed to by ptr to size bytes and returns a pointer to the (possibly moved) block. The contents will be unchanged up to the lesser of the new and old sizes. In order to be compatible with older versions, realloc also works if ptr points to a block freed since the last call of malloc, realloc or calloc; sequences of free, malloc and realloc were previously used to attempt storage compaction. This procedure is no longer recommended. Calloc allocates space for an array of nelem elements of size elsize. The space is initialized to zeros. Alloca allocates size bytes of space in the stack frame of the caller. This temporary space is automatically freed on return. Each of the allocation routines returns a pointer to space suitably aligned (after possible pointer coercion) for storage of any type of object. If the space is of pagesize or larger, the memory returned will be page-aligned. SEE ALSO
brk(2), pagesize(2) DIAGNOSTICS
Malloc, realloc and calloc return a null pointer (0) if there is no available memory or if the arena has been detectably corrupted by stor- ing outside the bounds of a block. Malloc may be recompiled to check the arena very stringently on every transaction; those sites with a source code license may check the source code to see how this can be done. BUGS
When realloc returns 0, the block pointed to by ptr may be destroyed. The current implementation of malloc does not always fail gracefully when system memory limits are approached. It may fail to allocate memory when larger free blocks could be broken up, or when limits are exceeded because the size is rounded up. It is optimized for sizes that are powers of two. Alloca is machine dependent; its use is discouraged. 4th Berkeley Distribution May 14, 1986 MALLOC(3)
All times are GMT -4. The time now is 09:10 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy