Every computer has a primary memory. All data and programs need to be placed in the primary memory for execution. RAM is a collection of memory locations (often known as cells) and each location has a specific address.
Unit III : Functions
and Pointers
CHAPTER
8 : POINTERS
Takeaways
•
Pointer expressions
•
Pointers with functions
•
Arrays of pointers
•
Pointers to pointers
•
Pointer arithmetic
•
Pointers with arrays
•
Pointers with 2D and 3D arrays
•
Dynamic memory allocation
•
Null and generic pointers
•
Pointers with strings
•
Function pointers
UNDERSTANDING
THE COMPUTER'S MEMORY
Every
computer has a primary memory. All data and programs need to be placed in the
primary memory for execution. RAM (Random Access Memory which is a part of the
primary memory) is a collection of memory locations (often known as cells) and
each location has a specific address. Each memory location is capable of
storing 1 byte of data (though new computers are able to store 2 bytes of data
but in this book we have been talking about locations storing 1 byte of data).
Therefore, a char type data needs just 1 memory location, an int type data
needs 2 memory locations. Similarly, float and double type data need 4 and 8
memory locations, respectively.
Generally,
the computer has three areas of memory each of which is used for a specific
task. These areas of memory include-stack, heap, and global memory.
Stack
A fixed size of memory called system stack is allocated by the system and is
filled as needed from the bottom to the top, one element at a time. These
elements can be removed from the top to the bottom by removing one element at a
time, i.e., the last element added to the stack is removed first.
When
the program has used the variables or data stored in the stack, it can be
discarded to enable the stack to be used by other programs to store their data.
We have already read a little bit on the system stack in Chapter 4 when we
discussed Recursion. We will read more about them in the chapter on Stacks.
Note
System
stack is the section of memory that is allocated for automatic variables within
functions.
Heap
It is a contiguous block of memory that is available for use by programs when
the need arises. A fixed size heap is allocated by the system and is used by
the system in a random fashion.
The
addresses of the memory locations in heap that are not currently allocated to
any program for use are stored in a free list. When a program requests a block
of memory, the dynamic allocation technique (discussed at the end of this
chapter) takes a block from the heap and assigns it to the program. When the
program has finished using the block, it returns the memory block to the heap
and the addresses of the memory locations in that block are added to the free
list.
Compared
to heaps, a stack is faster but smaller and expensive. When a program begins
execution with the main() function, all variables declared within main() are
allocated space on the stack. Moreover, all the parametres passed to a called
function are stored on the stack.
Global memory
The block of code that is the main() program (along with other functions in the
program) is stored in the global memory. The memory in the global area is
allocated randomly to store the code of different functions in the program in
such a way that one function is not contiguous to another function. Besides,
the function code, all global variables declared in the program are stored in
the global memory area.
Other memory layouts
C provides some more memory areas such as text segment, BSS, and shared library
segment.
•
The text segment is used to store the machine instructions corresponding to the
compiled program. This is generally a read-only memory segment.
•
BSS (Block Started by Symbol) is used to store un- initialized global
variables.
•
Shared library segment contains the executable image of shared libraries that
are being used by the program.
Programming in C: Unit III (b): Pointers : Tag: : Pointers - Understanding the Computer's Memory
Programming in C
CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation
Professional English II
HS3251 2nd Semester 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation
Statistics and Numerical Methods
MA3251 2nd Semester 2021 Regulation M2 Engineering Mathematics 2 | 2nd Semester Common to all Dept 2021 Regulation
Engineering Graphics
GE3251 eg 2nd semester | 2021 Regulation | 2nd Semester Common to all Dept 2021 Regulation
Physics for Electrical Engineering
PH3202 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation
Basic Civil and Mechanical Engineering
BE3255 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation
Electric Circuit Analysis
EE3251 2nd Semester 2021 Regulation | 2nd Semester EEE Dept 2021 Regulation
Physics for Electronics Engineering
PH3254 - Physics II - 2nd Semester - ECE Department - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation
Electrical and Instrumentation Engineering
BE3254 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation
Circuit Analysis
EC3251 - 2nd Semester - ECE Dept - 2021 Regulation | 2nd Semester ECE Dept 2021 Regulation
Materials Science
PH3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation
Basic Electrical and Electronics Engineering
BE3251 2nd semester Mechanical Dept | 2021 Regulation | 2nd Semester Mechanical Dept 2021 Regulation
Physics for Civil Engineering
PH3201 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation
Basic Electrical, Electronics and Instrumentation Engineering
BE3252 2021 Regulation | 2nd Semester Civil Dept 2021 Regulation
Physics for Information Science
PH3256 2nd Semester CSE Dept | 2021 Regulation | 2nd Semester CSE Dept 2021 Regulation
Basic Electrical and Electronics Engineering
BE3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation
Programming in C
CS3251 2nd Semester CSE Dept 2021 | Regulation | 2nd Semester CSE Dept 2021 Regulation