Sponsored Content
Top Forums Programming Help regarding memory leak in this C program Post 302610095 by shoaibjameel123 on Tuesday 20th of March 2012 11:18:28 PM
Old 03-21-2012
I came to know about memory leak using top. What I did was that I executed the code and and then checked the program memory usage using top command. top showed me that as the program kept on executing and reading more files, the memory usage would increase with time. Ultimately, a time came where the Linux Kernel killed the process itself because it was about to crash the system.

In fact after tweaking the code, the modified function which I have written later, I could see that the memory usage remains constant in top. Hence, this made me believe that it was the
Code:
void read_text_file ( FILE *file_pointer , char ** words_to_be_read , unsigned long int *number_of_words )

function that was causing the memory leak.

Looking at the fundamental concept, what I was doing was getting a chunk of memory in the main() main. Then passing an address of that allocated location as a parameter in a function so that I don't have to use malloc() inside a function. But within in the getline() function I was using the same allocated variable, which getline() function was again allocating on its own again. This resulted in memory leak, because that was not being freed (please look at my earlier
Code:
void read_text_file ( FILE *file_pointer , char ** words_to_be_read , unsigned long int *number_of_words )

function code). Moreover, I cannot use free to free up that variable as I have to return back to main() to do further computations. Therefore, I introduced a new variable *line initialized with NULL and then after reading a line from the file using in that and before returning, free'd that variable in the
Code:
void read_text_file ( FILE *file_pointer , char ** words_to_be_read , unsigned long int *number_of_words )

function (which is in my new code). I have already executed the program and it has given me the results without causing any further troubles. But since I am still learning C, I am not sure whether the standard of my code is good enough.
 

9 More Discussions You Might Find Interesting

1. Programming

about virtual memory and memory leak

Hi, First of all I appreciate this group very much for its informative discussions and posts. Here is my question. I have one process whose virtual memory size increases linearly from 6MB to 12MB in 20 minutes. Does that mean my process has memory leaks? In what cases does the... (4 Replies)
Discussion started by: shriashishpatil
4 Replies

2. Programming

Memory leak of fork()

Today, I wrote a test code for fork/execvp/waitpid. In the parent process, it fork 100 child processes which only execute "date" to print the current datetime. When any child process die, the parent process will receive a SIGCHLD signal. Then, the parent process will re-fork-execvp the child... (7 Replies)
Discussion started by: whererush
7 Replies

3. Programming

how to check memory leak in C program under Unix

Hi, How to detect memory leak in C program under unix ? Thanks (6 Replies)
Discussion started by: useless79
6 Replies

4. Programming

Memory LEAK with pthreads

I have this code... #include <stdio.h> #include <iostream> #include <pthread.h> static void* cliente(void *datos); int main() { pthread_attr_t tattr; int ret; size_t size = PTHREAD_STACK_MIN + 0x0100; ret = pthread_attr_init(&tattr); ret =... (8 Replies)
Discussion started by: JEscola
8 Replies

5. UNIX for Advanced & Expert Users

Need to create a memory leak

Hi. This might be a strange request, but does anyone have any idea on a simple shell script that would use more and more memory as it ran? Like a purposeful leak. I want to test the behaviour of an already running program when the machine runs out of memory. Thanks! (4 Replies)
Discussion started by: rebelbuttmunch
4 Replies

6. IP Networking

memory leak?

Hi All, my client server application can work in two modes: 1) one direction - only client sends msgs to server 2) two directions - server gives 'answers' to client. when program run in the first mode it looks OK, but when server answers to client than client's application exit its... (2 Replies)
Discussion started by: lenna
2 Replies

7. Programming

Memory Leak

Hi, I am trying a database server which keeps a B+ plus tree structure and works on it. I am trying to find the memory used/leak while executing this process. I check the memory leak by using ps uax command. When i execute a delete query i am sure that my code frees up the existing... (9 Replies)
Discussion started by: kumaran_5555
9 Replies

8. Red Hat

Memory leak

Hi all I am using RED HAT 5.4, and i am getting memory uses problem. when i use "sync;echo 3 > /proc/sys/vm/drop_cache" command the memory will release after 2,3 hour memory show 95%. pls suggest right way. thanks (37 Replies)
Discussion started by: reply.ravi
37 Replies

9. Web Development

Finding Cause of Memory Leak

Hi We have just got a dedicated server with Fasthosts, O/S is Linux CentOS 6 64 bit. It was a fresh install and I have just moved one WordPress site onto there. The problem is we seem to be getting a memory leak (that's what Fasthosts said) and the database (I think) keeps crashing, so we... (3 Replies)
Discussion started by: Pokeyzx
3 Replies
MALLOC_TRIM(3)						     Linux Programmer's Manual						    MALLOC_TRIM(3)

NAME
malloc_trim - release free memory from the top of the heap SYNOPSIS
#include <malloc.h> void malloc_trim(size_t pad); DESCRIPTION
The malloc_trim() function attempts to release free memory at the top of the heap (by calling sbrk(2) with a suitable argument). The pad argument specifies the amount of free space to leave untrimmed at the top of the heap. If this argument is 0, only the minimum amount of memory is maintained at the top of the heap (i.e., one page or less). A nonzero argument can be used to maintain some trailing space at the top of the heap in order to allow future allocations to be made without having to extend the heap with sbrk(2). RETURN VALUE
The malloc_trim() function returns 1 if memory was actually released back to the system, or 0 if it was not possible to release any memory. ERRORS
No errors are defined. CONFORMING TO
This function is a GNU extension. NOTES
This function is automatically called by free(3) in certain circumstances; see the discussion of M_TOP_PAD and M_TRIM_THRESHOLD in mal- lopt(3). This function cannot release free memory located at places other than the top of the heap. NOTES
This function only releases memory in the main arena. SEE ALSO
sbrk(2), malloc(3), mallopt(3) COLOPHON
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/. Linux 2012-03-29 MALLOC_TRIM(3)
All times are GMT -4. The time now is 02:15 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy