We may earn an affiliate commission when you visit our partners.
Udacity logo

Memory Management

David Silver, Stephen Welch, and Andreas Haja

What's inside

Syllabus

Introduction
This lesson covers basic concepts such as cache, virtual memory, and the structure of memory addresses. In addition, it is demonstrated how the debugger can be used to read data from memory.
Read more
In this lesson the process memory model is introduced, which contains the two fundamental memory areas heap and stack, which play an important role in C++.
This lesson introduces dynamic memory allocation on the heap. The commands malloc and free as well as new and delete are introduced for this purpose.
This section describes how to customize resource copying using the Rule of Three. Also, the Rule of Five is introduced, which helps develop a thorough memory management strategy in your code.
In this lesson the three types of smart pointers in C++ are presented and compared. In addition, it is shown how to transfer ownership from one program part to another using copy and move semantics.
The ChatBot project creates a dialogue where users can ask questions about some aspects of memory management in C++. Your task will be to optimize the project with modern memory management in mind.

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores memory management, which is standard in software development
Taught by David Silver, Stephen Welch, and Andreas Haja, who are recognized for their work in computer science
Develops a thorough understanding of memory management in C++
Builds a strong foundation of memory management for beginners
Requires students to come in with basic programming knowledge

Save this course

Save Memory Management to your list so you can find it easily later:
Save

Activities

Coming soon We're preparing activities for Memory Management. These are activities you can do either before, during, or after a course.

Career center

Learners who complete Memory Management will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers are the ones responsible for designing, developing, and maintaining software applications. It involves breaking down the problem into smaller modules and writing code to solve each part. This course on Memory Management can prove useful for this role since it covers essential concepts such as cache, virtual memory, dynamic memory allocation on the heap, and the structure of memory addresses.
Computer Programmer
Computer Programmers are responsible for writing, testing, and maintaining the code that makes computer applications and software run. This course on Memory Management can be useful since it helps build a foundation in memory management techniques, such as the use of smart pointers, the Rule of Three, and the Rule of Five.
Database Administrator
Database Administrators are responsible for managing and maintaining databases, ensuring their availability, performance, and security. This course on Memory Management can be useful since it provides an understanding of how memory is managed in computer systems, which can help in optimizing database performance.
Web Developer
Web Developers are responsible for designing, developing, and maintaining websites and web applications. This course on Memory Management may be useful for this role since it can help in understanding how memory is managed in web browsers and web servers.
Information Security Analyst
Information Security Analysts are responsible for protecting computer systems and data from unauthorized access, use, disclosure, disruption, modification, or destruction. This course on Memory Management may be helpful for this role since it can provide an understanding of how memory is managed in computer systems and how it can be exploited by attackers.
Cloud Architect
Cloud Architects are responsible for designing, developing, and maintaining cloud computing solutions. This course on Memory Management may be helpful for this role since it can provide an understanding of how memory is managed in cloud computing environments.
Business Intelligence Analyst
Business Intelligence Analysts are responsible for using data to improve business performance. This course on Memory Management may be useful for this role since it can provide an understanding of how data is stored and processed in computer systems.
Game Developer
Game Developers are responsible for designing, developing, and maintaining video games. This course on Memory Management can be useful since it can provide an understanding of how memory is managed in game engines and game consoles.
Technical Writer
Technical Writers are responsible for creating and maintaining documentation for computer software and hardware. This course on Memory Management may be useful for this role since it can provide an understanding of how memory is managed in computer systems and how to communicate this information to users.
Systems Administrator
Systems Administrators are responsible for managing and maintaining computer systems, including servers, networks, and operating systems. This course on Memory Management can be useful for this role since it provides an understanding of how memory is managed in operating systems and computer hardware.
Mobile Developer
Mobile Developers are responsible for designing, developing, and maintaining mobile applications. This course on Memory Management may be useful for this role since it can help in understanding how memory is managed in mobile operating systems and mobile devices.
Quality Assurance Analyst
Quality Assurance Analysts are responsible for testing software and hardware to ensure that they meet quality standards. This course on Memory Management may be useful for this role since it can provide an understanding of how memory is managed in computer systems and how to identify and fix memory-related errors.
Data Scientist
Data Scientists gather and analyze data to extract meaningful insights and patterns. This helps businesses make informed decisions and solve complex problems. This course on Memory Management may be helpful since it can provide a better understanding of how data is stored and processed in computer systems.
Embedded Systems Engineer
Embedded Systems Engineers are responsible for designing, developing, and maintaining embedded systems. These systems are typically used in devices such as cars, medical equipment, and industrial machinery. This course on Memory Management can be useful for this role since it provides an understanding of how memory is managed in embedded systems.
Data Analyst
Data Analysts are responsible for collecting, cleaning, and analyzing data to identify trends, patterns, and insights. This course on Memory Management may be useful for this role since it can provide an understanding of how data is stored and processed in computer systems.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Memory Management.
Is the definitive reference on the C++ programming language, providing a comprehensive overview of memory management.
Is the definitive guide on C++, updated to include the latest C++ standards.
Provides a comprehensive guide to concurrency in C++, including techniques for managing memory in multithreaded environments.
Provides a comprehensive overview of the C++ Standard Library, including containers, algorithms, and memory management.
Provides a comprehensive guide to C++ templates, which are used extensively in memory management.
Provides an introduction to the Rust programming language, which is known for its focus on memory safety and resource management.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser