Dynamic Memory Allocation - malloc versus realloc

  • Thread starter Thread starter angelspikes
  • Start date Start date
  • Tags Tags
    Dynamic Memory
Click For Summary
SUMMARY

This discussion focuses on dynamic memory allocation in C, specifically comparing the use of malloc and realloc. The user prefers realloc for its flexibility in resizing an array dynamically, while expressing frustration with linked lists due to their complexity and perceived drawbacks. The conversation highlights that while malloc allocates a fixed size, realloc allows for dynamic resizing but may incur performance costs due to data copying. Understanding the trade-offs between these methods is essential for efficient memory management.

PREREQUISITES
  • Understanding of C programming language
  • Familiarity with dynamic memory allocation concepts
  • Knowledge of malloc and realloc functions
  • Basic understanding of data structures, particularly arrays and linked lists
NEXT STEPS
  • Study the performance implications of realloc versus linked lists in C
  • Learn about memory management best practices in C programming
  • Explore the implementation of linked lists and their advantages over arrays
  • Investigate the use of free to prevent memory leaks in dynamic allocations
USEFUL FOR

C programmers, software developers working on memory-intensive applications, and anyone interested in optimizing dynamic memory allocation techniques.

angelspikes
Messages
10
Reaction score
0
There are two ways I'm used to allocate memory dynamically.

int * array = malloc(10 * sizeof(int));

But this type of memory allocation, have a predefined size, which is not desirable.
I keep hearing about linked list and push & pop. I've reviewed them over and over again, and they just look like an awful mess, and they have so many drawbacks. Some of the "practical" examples for a linked list has shown to be like 40 pages long. Below is my own way of allocating dynamic memory using realloc. It's plain and simple. You start with an empty array, then add data when needed, and you can delete it when you don't need it anymore, or why bother, just replace it:

#include <stdlib.h>
#include <stdio.h>

struct IO
{
int myInput;

} *pointer;

int main ()
{
// Put the two lines below in a loop which will fill up the dynamic array
pointer = (struct IO *) realloc (pointer, n * sizeof(struct IO));
pointer[n].myInput = myInput;

free (pointer);
}

Now you tell me, which one of these do you prefer, and would you still suggest me using a linked list or push & pop?
 
Engineering news on Phys.org
There's a lot of mixing of concepts here. Perhaps if you focus on arrays vs linked lists and read this first it may help:

http://www.techrepublic.com/article/deciding-whether-to-use-arrays-or-linked-lists/#.

The malloc/free and realloc are often used in the implementation of linked lists so once you understand the advantages of linked list then it will make more sense.

In your case, using realloc might involve a copy of the original data to the new expanded area and thus incur a possible slowdown in your code whereas a linked list implementation will do things in smaller chunks and run smoother.
 

Similar threads

  • · Replies 17 ·
Replies
17
Views
3K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 17 ·
Replies
17
Views
4K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 8 ·
Replies
8
Views
5K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 1 ·
Replies
1
Views
11K
  • · Replies 3 ·
Replies
3
Views
1K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K