What you'll learn

  • Understand different kinds of problems associated with memory management

  • Effectively detect & isolate memory problems

  • Gain confidence in C/C++ memory management

Course Features

  • Full lifetime access
  • Access on mobile
  • Certificate of Completion

    What you should know before enrolling in this course

    • Fair knowledge of C & C++

Course Description

C++ is a large and complex language, but it gives programmers complete freedom when it comes to management of dynamic memory. This allows the programmers to allocate memory and manipulate it at runtime. That is why C++ is still a favorite language for high performance applications in various domains such as gaming, telecom, finance, aerospace, etc.

However, it requires programmers to take great care while using dynamic memory, such as releasing acquired memory, taking care not to overstep memory boundary, etc. Otherwise, it could lead to problems such as dangling pointers, memory corruption, memory leaks, etc. 

This course will help you overcome all these problem by leveraging the excellent features that Visual Studio provides. It has a rich set of functions provided by the C/C++ runtime heap library. These functions can help detect memory leaks, overflows, etc. You'll learn how to use these functions effectively and make your programs bug-free.

In this course, you'll start with the basics of heap memory management and understand C & C++ allocation functions/operators in depth. You'll also learn how to effectively use them to avoid memory problems. Afterwards, you'll learn about the Visual Studio heap library functions and understand how to use them in your code.

By the end of this course, you'll have a deep understanding of dynamic memory management. You'll be able to use CRT heap functions effectively to detect & isolate memory problems. You'll also implement the Visual Studio functions so that they can be used with any C++ compiler.

Note:This course requires Visual Studio 2017 or a higher version.

Course curriculum

  • 1

    Start here

  • 2

    Memory Management in C

    • C Allocation Functions

    • Examples

    • Reallocation

  • 3

    Memory Management in C++

    • C++ Allocation Operators

    • How new works - I

    • How new works - II

    • Exceptions

    • new handler

    • Non-throwing Source Files

    • Non-throwing new - I

    • Non-throwing new - II

    • Non-throwing new - III

    • Placement new - I

    • Placement new II

    • Placement new III

    • Pplacement new IV

    • Placement new V

    • Operator new & delete functions

  • 4

    Memory Management Issues

    • Memory Management Issues

    • Uninitialized Pointers - I

    • Uninitialized Pointers - II

    • Buffer Overflow - Stack

    • Buffer Overflow - Heap

    • Dangling Pointers - I

    • Dangling Pointers - II

    • Memory Leaks - I

    • Memory Leaks II

  • 5

    Detecting Heap Corruptions

    • Source Files

    • String Class - I

    • String Class - II

    • String Class - III

    • String Class - IV

    • Detecting Heap Corruption in String

    • Heap Checker Class - I

    • Heap Checker Class - II

    • Heap Checker Class - III

    • Heap Checker Class - IV

    • Heap Checker Class - V

  • 6

    Detecting Memory Leaks

    • Source Files

    • _CrtDumpMemoryLeaks() function

    • _CrtDumpMemoryLeaks() Example

    • Leak Detection Flags

    • Detailed Leak Dump

    • Exercise

    • Memory Snapshots - I

    • Memory Snapshots - II

    • Memory Checkpoint Class

    • Issues with checkpoints

    • Snapshots in Visual Studio - I

    • Snapshots in Visual Studio - I

    • Report Modes & Types - I

    • Report Modes & Types - II

    • Redirecting to File

  • 7

    Custom Leak Detector

  • 8

    Custom Leak Detector - More Features

    • Heap Corruption Internals

    • PtCheckMemory() Implementation - I

    • PtCheckMemory() Implementation - II

    • Memory Alignment & Structure Padding

    • Block Header Alignment


Owner at Poash Technologies

Umar Lone

Civil engineer who found his calling in software development. Never worked as a Civil engineer, jumped at the first chance and started teaching C++, Visual C++ & COM 18 years ago. Currently, trains software professionals in various IT companies in India in different technologies, such as C++, Advanced C++, STL, Design Patterns, Android, Unity, Linux, etc. Very passionate about teaching and has trained more than 25,000 software professionals in a teaching career spanning more than 18 years. An avid gamer, currently trying his hand with game development in Unity & Unreal. Has a few Android applications to his credit, including one on Design Patterns. Only thing he likes more than C++ is Modern C++.

New course notifications

Add your email to the mailing list to get the latest updates.