Dynamic memory allocation. The process of allocating memory at run time is known as dynamic memory allocation. C have four library functions for allocating.

Slides:



Advertisements
Similar presentations
Dynamic memory allocation
Advertisements

Dynamic Memory Allocation in C.  What is Memory What is Memory  Memory Allocation in C Memory Allocation in C  Difference b\w static memory allocation.
Carnegie Mellon 1 Dynamic Memory Allocation: Basic Concepts : Introduction to Computer Systems 17 th Lecture, Oct. 21, 2010 Instructors: Randy Bryant.
Chris Riesbeck, Fall 2007 Dynamic Memory Allocation Today Dynamic memory allocation – mechanisms & policies Memory bugs.
Unions The storage referenced by a union variable can hold data of different types subject to the restriction that at any one time, the storage holds data.
Dynamic Memory Allocation
ECE Application Programming Instructor: Dr. Michael Geiger Fall 2012 Lecture 31: Dynamic memory allocation.
Spring 2005, Gülcihan Özdemir Dağ Lecture 12, Page 1 BIL104E: Introduction to Scientific and Engineering Computing, Spring Lecture 12 Outline 12.1Introduction.
Pointers A pointer is a reference to another variable (memory location) in a program –Used to change variables inside a function (reference parameters)
CSCI 171 Presentation 11 Pointers. Pointer Basics.
Dynamic Memory Allocation The memory usage for program data can increase or decrease as your program runs. The memory usage for program data can increase.
Growing Arrays in C By: Victoria Tielebein CS 265- Spring 2011.
User-Level Memory Management in Linux Programming
Agenda  Review: pointer & array  Relationship between pointer & array  Dynamic memory allocation.
ספטמבר 04Copyright Meir Kalech1 C programming Language Chapter 6: Dynamic Memory Allocation (DMA)
Pointer applications. Arrays and pointers Name of an array is a pointer constant to the first element whose value cannot be changed Address and name refer.
1 Objectives ❏ To understand the relationship between arrays and pointers ❏ To understand the design and concepts behind pointer arithmetic ❏ To write.
Engineering Problem Solving with C Fundamental Concepts Chapter 6 Pointers.
Kernighan/Ritchie: Kelley/Pohl:
Memory Allocation. Memory A memory or store is required in a computer to store programs (or information or data). Data used by the variables in a program.
Memory allocation CSE 2451 Matt Boggus. sizeof The sizeof unary operator will return the number of bytes reserved for a variable or data type. Determine:
Winter2015 COMP 2130 Intro Computer Systems Computing Science Thompson Rivers University C: Advanced Topics.
POINTER Prepared by MMD, Edited by MSY1.  Basic concept of pointers  Pointer declaration  Pointer operator (& and *)  Parameter passing by reference.
1 Day 03 Introduction to C. 2 Memory layout and addresses r s int x = 5, y = 10; float f = 12.5, g = 9.8; char c = ‘r’, d = ‘s’;
Dynamic Data Structures H&K Chapter 14 Instructor – Gokcen Cilingir Cpt S 121 (July 26, 2011) Washington State University.
Lecture 2 Pointers Pointers with Arrays Dynamic Memory Allocation.
Pointers Applications
Outline Midterm results Static variables Memory model
1 Programming with Pointers Turgay Korkmaz Office: SB Phone: (210) Fax: (210) web:
Lecture 13 Static vs Dynamic Memory Allocation
7. Pointers, Dynamic Memory 20 th September IIT Kanpur 1C Course, Programming club, Fall 2008.
Stack and Heap Memory Stack resident variables include:
Dynamic Memory Allocation The process of allocating memory at run time is known as dynamic memory allocation. C does not Inherently have this facility,
6. More on Pointers 14 th September IIT Kanpur C Course, Programming club, Fall
ECE 103 Engineering Programming Chapter 47 Dynamic Memory Alocation Herbert G. Mayer, PSU CS Status 6/4/2014 Initial content copied verbatim from ECE 103.
Prachi A. Joshi Assistant Professor in CSE DIEMS,Aurangabad Unit 1 : Basic Concepts Pointers and dynamic memory allocation, Algorithm Specification, Data.
Pointers in C Computer Organization I 1 August 2009 © McQuain, Feng & Ribbens Memory and Addresses Memory is just a sequence of byte-sized.
+ Dynamic memory allocation. + Introduction We often face situations in programming where the data is dynamics in nature. Consider a list of customers.
1 Lecture07: Memory Model 5/2/2012 Slides modified from Yin Lou, Cornell CS2022: Introduction to C.
1 Dynamic Memory Allocation. 2 In everything we have done so far, our variables have been declared at compile time. In these slides, we will see how to.
POINTERS IN C Pointer Basics, Pointer Arithmetic, Pointer to arrays and Pointer in functions.
By Anand George SourceLens.org Copyright. All rights reserved. Content Owner - Meera R (meera at sourcelens.org)
MORE POINTERS Plus: Memory Allocation Heap versus Stack.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 11: Pointers.
BIL 104E Introduction to Scientific and Engineering Computing Lecture 9.
DYNAMIC MEMORY ALLOCATION. Disadvantages of ARRAYS MEMORY ALLOCATION OF ARRAY IS STATIC: Less resource utilization. For example: If the maximum elements.
Arrays and Pointers (part 1) CSE 2031 Fall July 2016.
CSE 220 – C Programming malloc, calloc, realloc.
Stack and Heap Memory Stack resident variables include:
Day 03 Introduction to C.
Course Contents KIIT UNIVERSITY Sr # Major and Detailed Coverage Area
Day 03 Introduction to C.
CSCI206 - Computer Organization & Programming
Dynamic Memory Allocation
Programming and Data Structures
Pointers and dynamic memory
CSC215 Lecture Memory Management.
Dynamic Memory Allocation
Dynamic Memory Allocation
CS111 Computer Programming
Dynamic Memory Allocation
Dynamic Memory Allocation (and Multi-Dimensional Arrays)
EENG212 – Algorithms & Data Structures Fall 07/08 – Lecture Notes # 5b
7. Pointers, Dynamic Memory
C Programming Lecture-8 Pointers and Memory Management
Chapter 10-1: Dynamic Memory Allocation
Dynamic Memory – A Review
Run-time environments
Pointers.
Dynamic Data Structures
Presentation transcript:

Dynamic memory allocation

The process of allocating memory at run time is known as dynamic memory allocation. C have four library functions for allocating memory at run time. The following functions are used in c for purpose of memory management.

Dynamic memory allocation malloc() Allocates memory requests size of bytes and returns address to a pointer. calloc() Allocates space for an array of elements initializes them to zero and returns a pointer to the memory free() Frees previously allocated space realloc() Modifies the size of previously allocated space.

Dynamic memory allocation Memory allocations process The memory is divided into 3 Stack Heap Permanent storage Memory space stack used to allocate static memory allocations ie ordinary variables & arrays Permanent storage is used to store program code Heap is used to allocate dynamic memory allocations Heap is depended to stack & code Stack Heap Permanent Storage

Dynamic memory allocation Memory allocations process The free memory region is called the heap. The size of heap keeps changing when program is executed due to creation and death of variables. Therefore it is possible to encounter memory overflow during dynamic allocation process. In such situations, the memory allocation functions mentioned above will return a null pointer.

Dynamic memory allocation Allocating a block of memory: A block of memory may be allocated using the function malloc(). The malloc function reserves a block of memory of specified size and returns a pointer of type void. This means that we can assign it to any type of pointer. It takes the following form: ptr=(cast-type*)malloc(byte-size);

Dynamic memory allocation ptr is a pointer of type cast-type the malloc() returns a pointer (of cast type) to an area of memory with size byte-size. Example: a memory equivalent to 100 times the area of int bytes is reserved and the address of the first byte of memory allocated is assigned to the pointer x of type int x=(int*)malloc(100*sizeof(int));

Dynamic memory allocation Allocating multiple blocks of memory Calloc is another memory allocation function that is normally used to request multiple blocks of storage each of the same size and then sets all bytes to zero. The general form of calloc is: The above statement allocates contiguous space for n blocks each size of elements size bytes. All bytes are initialized to zero and a pointer to the first byte of the allocated region is returned. If there is not enough space a null pointer is returned. ptr=(cast-type*) calloc(n,elem-size);

Dynamic memory allocation Releasing the used space: Compile time storage of a variable is allocated and released by the system in accordance with its storage class. With the dynamic runtime allocation, it is our responsibility to release the space when it is not required.

Dynamic memory allocation Releasing the used space: The release of storage space becomes important when the storage is limited. When we no longer need the data we stored in a block of memory and we do not intend to use that block for storing any other information, we may release that block of memory for future use, using the free function. ptr is a pointer that has been created by using malloc or calloc. free(ptr);

Dynamic memory allocation To alter the size of allocated memory: The memory allocated by using calloc or malloc might be insufficient or excess sometimes in both the situations we can change the memory size already allocated with the help of the function realloc(). This process is called reallocation of memory. The general statement of reallocation of memory is : This function allocates new memory space of size newsize to the pointer variable ptr ans returns a pointer to the first byte of the memory block. The allocated new block may be or may not be at the same region. ptr=realloc(ptr,newsize);

Dynamic memory allocation malloc() example #include void main() { int *ptr; ptr=(int *)malloc(2); scanf("%d",ptr); printf("value= %d",*ptr); free(ptr); /* free allocated memory */ getch(); }

Dynamic memory allocation Calloc() example #include void main() { int *ptr,i,n; printf("enter limit "); scanf("%d",&n); ptr=(int *)calloc(n,2); for(i=1;i<=n;i++) { printf("Enter %d no :- ",i); scanf("%d",ptr); ptr++; } ptr=ptr-n; printf("\n given nos "); for(i=1;i<=n;i++) { printf("%d ",*ptr); ptr++; } free(ptr); /* free allocated memory */ getch(); }

Dynamic memory allocation Realloc() example #include void main() { int *ptr,i,n; printf("enter limit "); scanf("%d",&n); ptr=(int *)calloc(n,2); for(i=1;i<=n;i++) { printf("Enter %d no :- ",i); scanf("%d",ptr); ptr++; } ptr=ptr-n; printf("\n given nos "); for(i=1;i<=n;i++) { printf("%d ",*ptr); ptr++; } ptr=(int *)realloc(ptr,3); free(ptr); /* free allocated memory */ getch(); }