08-26-2011
1, Only memory allocated explicitly or implicitly by malloc() should be free() manually (explicitly or use wrapper of free).
2, If you don't free them, OS will recycle them when the process terminates. But this causes memory leak.
3, depend on they type of the memory. If it is static memory, you need not and you can't. If it is allocated by malloc() you need.
4, you should explicitly free() memory if you called strdup() because it is a wrapper of malloc(), and it doesn't give a wrapper of free().
This User Gave Thanks to vistastar For This Post:
10 More Discussions You Might Find Interesting
1. Programming
For example if i have the piece of code as follows:
CountryName = (char *)malloc((strlen(CountryName)+1)*sizeof(char));
memset(CountryName, 0, strlen(CountryName)+1);
CountryName = SOME VALUE
Now how do i free the memory after use of this code???? :confused: (3 Replies)
Discussion started by: jazz
3 Replies
2. AIX
Hi,
how to find free memory in aix? for installing oracle,I have used svmon but not getting proper output (1 Reply)
Discussion started by: manoj.solaris
1 Replies
3. AIX
Hi,
I want to know how to find out free physical memory in aix, (11 Replies)
Discussion started by: manoj.solaris
11 Replies
4. Solaris
Hi,
Im working on Solaris 9 on SPARC-32 bit running on an Ultra-80, and I have to find out the following:-
1. Total Physical Memory in the system(total RAM).
2. Available Physical Memory(i.e. RAM Usage)
3. Total (Logical) Memory in the system
4. Available (Logical) Memory.
I know... (4 Replies)
Discussion started by: 0ktalmagik
4 Replies
5. Solaris
Hi all,
Could please let me know how to get the more memory free space (not added the RAM) in local zone.
-bash-3.00# vmstat 2 5
kthr memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s1 s1 s1 in sy cs us sy... (3 Replies)
Discussion started by: murthy76
3 Replies
6. Red Hat
hi, I have done the below, but am confused as to how much memory is "free"
please help
thanks
$ free
total used free shared buffers cached
Mem: 132033488 48827536 83205952 0 1007696 45404632
-/+ buffers/cache: 2415208 ... (7 Replies)
Discussion started by: JamesByars
7 Replies
7. UNIX for Advanced & Expert Users
I was running a program and it stopped and showed "Out of Memory!". at that time, the RAM used by this process is around 4G and the free memory size of the machine is around 30G. Does anybody know what maybe the reason? this program is written with Perl. the OS of the machine is Solaris U8. And I... (1 Reply)
Discussion started by: lilili07
1 Replies
8. AIX
All,
AIX: 6.1 64 bits
How to find out Free memory available on AIX 6.1 64 bits
When I used :
svmon -G
size inuse free pin virtual mmode
memory 1048576 612109 191151 215969 549824 Ded-E
pg space 4325376 ... (1 Reply)
Discussion started by: a1_win
1 Replies
9. Solaris
Hi,
I am wondering if there is a way to free up memory in Solaris manually ? the way we can do it in Linux for example :
echo `/bin/date` "************* Memory Info Before *************"
free -m
sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 >... (13 Replies)
Discussion started by: terrykhatri531
13 Replies
10. Solaris
If I understand your question correctly, you are asking for an explanation of Solaris memory manager. You'd better ask Oracle that question because you are talking about Solaris kernel internals.
The operating system kernel has no reason to kick a process's memory set out of real memory until... (4 Replies)
Discussion started by: hicksd8
4 Replies
MALLOC(3) BSD Library Functions Manual MALLOC(3)
NAME
malloc, calloc, realloc, free -- general purpose memory allocation functions
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <stdlib.h>
void *
malloc(size_t size);
void *
calloc(size_t number, size_t size);
void *
realloc(void *ptr, size_t size);
void
free(void *ptr);
DESCRIPTION
The malloc() function allocates size bytes of uninitialized memory. The allocated space is suitably aligned (after possible pointer coer-
cion) for storage of any type of object.
The calloc() function allocates space for number objects, each size bytes in length. The result is identical to calling malloc() with an
argument of ``number * size'', with the exception that the allocated memory is explicitly initialized to zero bytes.
The realloc() function changes the size of the previously allocated memory referenced by ptr to size bytes. The contents of the memory are
unchanged up to the lesser of the new and old sizes. If the new size is larger, the value of the newly allocated portion of the memory is
undefined. Upon success, the memory referenced by ptr is freed and a pointer to the newly allocated memory is returned. Note that realloc()
may move the memory allocation, resulting in a different return value than ptr. If ptr is NULL, the realloc() function behaves identically
to malloc() for the specified size.
The free() function causes the allocated memory referenced by ptr to be made available for future allocations. If ptr is NULL, no action
occurs.
RETURN VALUES
The malloc() and calloc() functions return a pointer to the allocated memory if successful; otherwise a NULL pointer is returned and errno is
set to ENOMEM.
The realloc() function returns a pointer, possibly identical to ptr, to the allocated memory if successful; otherwise a NULL pointer is
returned, and errno is set to ENOMEM if the error was the result of an allocation failure. The realloc() function always leaves the original
buffer intact when an error occurs.
The free() function returns no value.
EXAMPLES
When using malloc(), be careful to avoid the following idiom:
if ((p = malloc(number * size)) == NULL)
err(EXIT_FAILURE, "malloc");
The multiplication may lead to an integer overflow. To avoid this, calloc() is recommended.
If malloc() must be used, be sure to test for overflow:
if (size && number > SIZE_MAX / size) {
errno = EOVERFLOW;
err(EXIT_FAILURE, "allocation");
}
When using realloc(), one must be careful to avoid the following idiom:
nsize += 50;
if ((p = realloc(p, nsize)) == NULL)
return NULL;
Do not adjust the variable describing how much memory has been allocated until it is known that the allocation has been successful. This can
cause aberrant program behavior if the incorrect size value is used. In most cases, the above example will also leak memory. As stated ear-
lier, a return value of NULL indicates that the old object still remains allocated. Better code looks like this:
newsize = size + 50;
if ((p2 = realloc(p, newsize)) == NULL) {
if (p != NULL)
free(p);
p = NULL;
return NULL;
}
p = p2;
size = newsize;
SEE ALSO
madvise(2), mmap(2), sbrk(2), alloca(3), atexit(3), getpagesize(3), memory(3), posix_memalign(3)
For the implementation details, see jemalloc(3).
STANDARDS
The malloc(), calloc(), realloc() and free() functions conform to ISO/IEC 9899:1990 (``ISO C90'').
BSD
May 3, 2010 BSD