11-07-2011
short answer: most shells have a resident variable memory pool, extending it requires a call to malloc(). Read the putenv manpage, it explains this.
What problem are you trying to solve? Out of memory?
This User Gave Thanks to jim mcnamara For This Post:
10 More Discussions You Might Find Interesting
1. UNIX for Dummies Questions & Answers
I would like to know how I could allocate some more memory to a process.
Please note that I am not the root user. (1 Reply)
Discussion started by: sagar
1 Replies
2. UNIX for Advanced & Expert Users
Hello!
First of all, forgive me for bad English.
When I starts new thread (pthread_create), system allocates some memory for it (for example, for thread's stack). I wonder when does it deallocate this memory? The problem is that I have a program which sometimes creates new threads and sometimes... (3 Replies)
Discussion started by: prankster
3 Replies
3. UNIX for Dummies Questions & Answers
Hi all,
I have a HP-UX Server with 4 gigabytes of physical RAM. When I use the 'Glance' utility to see what my memory utilization is, my memory usage shows up maxed out at 99%. I shut off all the known processes that I'm running on that box and the memory utilization is still at 78% (with Swap... (1 Reply)
Discussion started by: dehuang83
1 Replies
4. HP-UX
Hi all,
I have a HP-UX Server with 4 gigabytes of physical RAM. When I use the 'Glance' utility to see what my memory utilization is, my memory usage shows up maxed out at 99%. I shut off all the known processes that I'm running on that box and the memory utilization is still at 78% (with Swap... (3 Replies)
Discussion started by: dehuang83
3 Replies
5. Programming
Hi,
I am trying to process line by line of a file. But I should not be allocating static allocation for reading the contents of the file. The memory should be dynamically allocated. The confusion here is how do I determine the size of each line, put it into a buffer with the memory allocated... (11 Replies)
Discussion started by: naan
11 Replies
6. Programming
I have a program that will fetch some particular lines and store it in a buffer for further operations.The code which is given below works but with some errors.I couldn't trace out the error.Can anybody help on this plz??
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define... (1 Reply)
Discussion started by: vigneshinbox
1 Replies
7. Programming
Hi Experts
I need some help in static memory allocation in C. I have a program in which I declared 2 variables, one char array and one integer. I was little surprised to see the addresses of the variables.
First:
int x;
char a;
printf("%u %u\n', &x, a);
I got the addresses displayed... (2 Replies)
Discussion started by: unx_freak
2 Replies
8. Programming
When we dynamically allocate the memory say 100 integers say
int *x = new int(1000);
then does entire chunk of memory gets allocated at once after the completion of the statement?
I mean will the the concept of page fault come into picture over here? (3 Replies)
Discussion started by: rupeshkp728
3 Replies
9. Programming
hi
in the following code, how the memory is allocated for a1 which holds the values of a2 after cpy function call.
#include <stdio.h>
#include <string.h>
void cpy(char* d, const char* s){
while(*d++=*s++);
}
main(){
char* a1;
char* a2="done";
cpy(a1,a2);
... (3 Replies)
Discussion started by: mprakasheee
3 Replies
10. UNIX for Dummies Questions & Answers
I am using ubuntu. I have written a program to calculate prime factors. it works perfectly fine till entered number is less than 9989 (or so ) but when one enters a number higher than that, for example 15000, it does not work. Can anyone guide me whats the problem ? although new codes are welcome,... (2 Replies)
Discussion started by: Abhishek_kumar
2 Replies
PUTENV(3P) POSIX Programmer's Manual PUTENV(3P)
PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (consult the correspond-
ing Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux.
NAME
putenv - change or add a value to an environment
SYNOPSIS
#include <stdlib.h>
int putenv(char *string);
DESCRIPTION
The putenv() function shall use the string argument to set environment variable values. The string argument should point to a string of the
form " name= value ". The putenv() function shall make the value of the environment variable name equal to value by altering an existing
variable or creating a new one. In either case, the string pointed to by string shall become part of the environment, so altering the
string shall change the environment. The space used by string is no longer used once a new string which defines name is passed to putenv().
The putenv() function need not be reentrant. A function that is not required to be reentrant is not required to be thread-safe.
RETURN VALUE
Upon successful completion, putenv() shall return 0; otherwise, it shall return a non-zero value and set errno to indicate the error.
ERRORS
The putenv() function may fail if:
ENOMEM Insufficient memory was available.
The following sections are informative.
EXAMPLES
Changing the Value of an Environment Variable
The following example changes the value of the HOME environment variable to the value /usr/home.
#include <stdlib.h>
...
static char *var = "HOME=/usr/home";
int ret;
ret = putenv(var);
APPLICATION USAGE
The putenv() function manipulates the environment pointed to by environ, and can be used in conjunction with getenv().
See exec(), for restrictions on changing the environment in multi-threaded applications.
This routine may use malloc() to enlarge the environment.
A potential error is to call putenv() with an automatic variable as the argument, then return from the calling function while string is
still part of the environment.
The setenv() function is preferred over this function.
RATIONALE
The standard developers noted that putenv() is the only function available to add to the environment without permitting memory leaks.
FUTURE DIRECTIONS
None.
SEE ALSO
exec(), getenv(), malloc(), setenv(), the Base Definitions volume of IEEE Std 1003.1-2001, <stdlib.h>
COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol-
ogy -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE
and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained
online at http://www.opengroup.org/unix/online.html .
IEEE
/The Open Group 2003 PUTENV(3P)