Sponsored Content
Top Forums Programming Why memory allocated through malloc should be freed ? Post 302349202 by matrixmadhan on Monday 31st of August 2009 09:54:05 AM
Old 08-31-2009
Quote:
I understand that, But any part of the process's address space being leaked leads to a memory leak. But stack, data and text segments' memory is not at all leaked. Beacuse they are freed by the OS itself when a process terminates. But Heap alone needs to be freed explicitly. why is that so?
Other segments are allocated by OS, and OS knows to and does a good job of properly deallocating once the process is done. But memory to heap is explicitly allocated via - malloc ( are any memory allocation call ) which means that OS is giving authority to the caller to allocate memory which implicitly means its the onus of the caller to deallocate when not in use / not required.

With more power comes more responsibility Smilie
 

10 More Discussions You Might Find Interesting

1. Solaris

Memory allocated

Hi, How to find out what is the maximum memory allocated to TOMCAT server in SunOS 5.8? The Tomcat server crashes down during peak times.... Regards (1 Reply)
Discussion started by: baanprog
1 Replies

2. Programming

malloc gives the same memory to two different nodes. How to deal with it?

When allocating memory for two different nodes, the resulting memory are the same. Clearly, this will lead to a mistake. This happened in a function. And the process must be in a function. (gdb) p tree->list $43 = (node *) 0x8be4180 (gdb) p tree->list $44 = (node *) 0x8be4180 At the... (2 Replies)
Discussion started by: cdbug
2 Replies

3. Solaris

Memory usage in Solaris - memory not freed?

Hi, I'm running a multi-process software system on a Solaris 8 machine. When I monitor the memory usage, I see that the free memory is dropping rapidly, but I can't detect a process that uses this memory. I'm using "top" to get the free memory and the memory usage of processes. Thanks. (3 Replies)
Discussion started by: gewurtz
3 Replies

4. AIX

amount of memory allocated to large page

We just set up a system to use large pages. I want to know if there is a command to see how much of the memory is being used for large pages. For example if we have a system with 8GB of RAm assigned and it has been set to use 4GB for large pages is there a command to show that 4GB of the *GB is... (1 Reply)
Discussion started by: daveisme
1 Replies

5. HP-UX

how to find size of memory allocated to a pointer?

Hi, Am new to HP UX , is there a way to find out the size of memory allocated to a pointer on hp ux? For example we can use the _msize() on windows to find the size of memory allocated to a pointer . #include <stdio.h> #include <malloc.h> void main() { void *buffer; ... (0 Replies)
Discussion started by: Wkdunreal
0 Replies

6. Programming

Regarding the maximum memory allocated by malloc() function on HP-UX B11.11

In a 'C' program,when I am trying to allocate memory with the help of malloc () function, it is allocating the memory up to a certain limit for e.g. in my case, it is 670 MB (approx). malloc() returns NULL if I allocate more than this amount of memory.When I tried to allocate memory in chunks of... (1 Reply)
Discussion started by: vipinsachan
1 Replies

7. Programming

./match_pattern.out: malloc(): memory corruption: 0x0000000013a11600 ***

Hi All, I have a simple code which does some computation by matching string patterns. In brief: 1. The code reads .dat and .txt files. 2. .dat files are huge text files and .txt files contain some important words. 3. I am just doing strstr to find the patterns. 4. The function returns the... (3 Replies)
Discussion started by: shoaibjameel123
3 Replies

8. Programming

glib detected: malloc() memory curruption

I am using libxml2 library for XMl parsing and libxml++ is C++ wrapper over that. So I am using API of libxml++. I am creating my class and composing instance xmlpp::Node *pNode in that. my class also have funciton prepareXPathQuery() which creates query string and have other fucntion... (2 Replies)
Discussion started by: sharadwagh
2 Replies

9. Red Hat

KVM/Qemu allocated memory not showing in guest

So we have a RHEL 7.6 workstation with 128 gigs of ram. The OS sees all the ram and 80 cors (40 HT) We have 1 guest with 8 CPUs and 32gigs of ram running RHEL 7.6 workstation as well. We are trying to create another guest with 64 CPUs and 80 gigs of ram. We setup the system using... (0 Replies)
Discussion started by: joeg1484
0 Replies

10. UNIX for Beginners Questions & Answers

How to change allocated memory for a process?

Hello, I am running ubuntu 14.04 in a server with 32GB ram. Due to receiving "high load" errors during ssh connection, I took a look at what's happening from command line. I detected that 20GB of total memory was allocated to a program. Below you can see some initial part of installation... (4 Replies)
Discussion started by: baris35
4 Replies
NJAMDPM(1)						      General Commands Manual							NJAMDPM(1)

NAME
njamdpm - Not Just Another Malloc Debugger Post-Mortem SYNOPSIS
njamdpm [OPTIONS] <HEAP FILE> DESCRIPTION
njamdpm is a companion utility that allows you to examine the persistent heap saved by libnjamd(3) You can do things like query for certain addresses, show memory leaks, and show all past allocated memory. As of NJAMD 0.6.0, gdb(1) is required to make sense of the return addresses. USAGE
Options HEAP FILE The heap file will be in the current directory with a name of the form njamd-<pid>-heap, but only if NJAMD_PERSISTANT_HEAP was in the environment at the time of program execution -a address Search through the heap file for a chunk of memory that contains address. This can be VERY helpful when using gdb. Simply find the address that you accessed to cause the segmentation fault, use njamdpm to look it up in the heap, and viola! You have all sorts of info about the chunk: When it was allocated, when it was freed, how big is is, etc. -d depth When displaying return address info, only display depth return addresses. The max is specified in ./include/lib/njamd.h in the define TRACE_DEPTH (default is 3). -t Trim the heap file down to only the used portion. This is useful if for some reason the program somehow exits without trimming its own heap file down first. Note that when the heap file appears huge it's not actually taking up disk space. -s Dump basic status info about peak memory usage, NJAMD overhead, etc. Useful for determining if you should buy more ram, or write me an angry email :) -l Dump memory leaks in the heap. Also shows you info about where the memory was leaked, along with a total. Do note that this total and the subtotals are aligned bytes. They are aligned to the alignment of your architecture, or as specified by the value the NJAMD_ALIGN environment variable had when the heap was created. -f Dump freed memory in the heap. This option is only available if LIBNJAMD ran without NJAMD_CHK_FREE=none set. Using gdb with njamdpm When a segmentation fault happens, it's because, of course, you accessed an invalid address. So all you need to do is get gdb to give you the address you accessed, and then feed it to njamdpm. Ie if the segfault occurs on a line that does buf[i] = 2, issue print &buf[i] to gdb. Note that libnjamd(3) now has a function __nj_ptr_info that can be called from gdb that performs all this without njamdpm. To get gdb to translate these return addresses into something meaningful, issue info line *0xaddress to obtain the line number of the allocation request, or list *0xaddress to see the adjacent code as well. NOTES
Eventually I hope to add symbol translation right into njamdpm. AUTHORS
Mike Perry <mikepery@fscked.org> SEE ALSO
http://freshmeat.net/appindex/development/debugging.html njamd(3), efence(3), malloc(3), mmap(2), mprotect(2) NJAMD - 5 Oct 2000 NJAMDPM(1)
All times are GMT -4. The time now is 01:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy