Bird
Raised Fist0
C++programming~5 mins

Memory allocation and deallocation in C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is memory allocation in C++?
Memory allocation is the process of reserving a portion of computer memory for use by a program during its execution.
Click to reveal answer
intermediate
What is the difference between new and malloc() in C++?
new allocates memory and calls the constructor, while malloc() only allocates memory without calling constructors.
Click to reveal answer
beginner
How do you deallocate memory allocated with new?
Use delete to free memory allocated with new. For arrays, use delete[].
Click to reveal answer
beginner
What happens if you forget to deallocate memory in C++?
Forgetting to deallocate memory causes a memory leak, which wastes memory and can slow down or crash your program.
Click to reveal answer
intermediate
Explain the difference between stack and heap memory.
Stack memory stores local variables and is automatically managed. Heap memory is manually managed and used for dynamic allocation.
Click to reveal answer
Which operator is used to allocate memory dynamically in C++?
Amalloc
Balloc
Cnew
Dcreate
How do you free memory allocated with malloc()?
Afree
Bdelete
Crelease
Ddelete[]
What keyword is used to deallocate memory allocated with new[]?
Adelete
Bdelete[]
Crelease[]
Dfree
What is a memory leak?
AMemory allocated but never used
BMemory freed twice
CMemory allocated on stack
DMemory allocated but not freed
Where are local variables stored in C++?
AStack
BHeap
CGlobal memory
DCache
Describe how dynamic memory allocation and deallocation work in C++.
Think about how you reserve and free memory manually.
You got /4 concepts.
    Explain the difference between stack and heap memory with examples.
    Consider where variables live during program execution.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the new operator do in C++?
      easy
      A. Allocates memory on the heap for a variable or object
      B. Deletes a variable from memory
      C. Allocates memory on the stack
      D. Copies data from one variable to another

      Solution

      1. Step 1: Understand the role of new

        The new operator allocates memory dynamically on the heap during program execution.
      2. Step 2: Differentiate from other memory actions

        It does not delete memory or allocate on the stack; it only reserves space on the heap.
      3. Final Answer:

        Allocates memory on the heap for a variable or object -> Option A
      4. Quick Check:

        new = allocate heap memory [OK]
      Hint: Remember: new = allocate memory on heap [OK]
      Common Mistakes:
      • Confusing new with delete
      • Thinking new allocates on stack
      • Assuming new copies data
      2. Which of the following is the correct syntax to deallocate memory allocated with new for a single integer variable?
      easy
      A. delete[] ptr;
      B. free(ptr);
      C. delete ptr;
      D. ptr = nullptr;

      Solution

      1. Step 1: Identify correct deallocation for single object

        Memory allocated with new for a single variable must be freed with delete, not delete[].
      2. Step 2: Exclude incorrect options

        free() is for C-style malloc, and setting pointer to nullptr does not free memory.
      3. Final Answer:

        delete ptr; -> Option C
      4. Quick Check:

        Single object deallocation = delete [OK]
      Hint: Use delete for single object, delete[] for arrays [OK]
      Common Mistakes:
      • Using delete[] for single variable
      • Using free() instead of delete
      • Only setting pointer to nullptr without delete
      3. What is the output of the following code?
      int* ptr = new int(10);
      std::cout << *ptr << std::endl;
      delete ptr;
      medium
      A. 0
      B. 10
      C. Garbage value
      D. Compilation error

      Solution

      1. Step 1: Analyze memory allocation and initialization

        The pointer ptr points to a new integer initialized with 10.
      2. Step 2: Understand output before deletion

        Dereferencing *ptr prints 10 before memory is deleted.
      3. Final Answer:

        10 -> Option B
      4. Quick Check:

        Dereference new int(10) = 10 [OK]
      Hint: Dereference pointer before delete to see value [OK]
      Common Mistakes:
      • Assuming output is 0 or garbage
      • Thinking delete affects output before cout
      • Confusing syntax causing compile error
      4. Identify the error in the following code snippet:
      int* arr = new int[5];
      delete arr;
      medium
      A. Pointer arr is not initialized
      B. Memory is not allocated properly
      C. No error, code is correct
      D. Should use delete[] instead of delete

      Solution

      1. Step 1: Check allocation type

        Memory allocated with new[] must be deallocated with delete[].
      2. Step 2: Identify mismatch in deallocation

        Using delete instead of delete[] causes undefined behavior.
      3. Final Answer:

        Should use delete[] instead of delete -> Option D
      4. Quick Check:

        Array deallocation = delete[] [OK]
      Hint: Match new[] with delete[] always [OK]
      Common Mistakes:
      • Using delete for arrays
      • Ignoring pointer initialization
      • Assuming no error in mismatched delete
      5. You want to allocate memory for an array of 10 integers and initialize all elements to zero. Which code snippet correctly does this and safely deallocates the memory?
      hard
      A. int* arr = new int[10](); delete[] arr;
      B. int* arr = new int[10]; delete arr;
      C. int* arr = (int*)malloc(10 * sizeof(int)); delete[] arr;
      D. int* arr = new int(10); delete[] arr;

      Solution

      1. Step 1: Allocate and initialize array to zero

        Using new int[10]() allocates an array of 10 integers and initializes all to zero.
      2. Step 2: Properly deallocate array memory

        Memory allocated with new[] must be freed with delete[] to avoid leaks or undefined behavior.
      3. Final Answer:

        int* arr = new int[10](); delete[] arr; -> Option A
      4. Quick Check:

        new[] with () + delete[] = safe zero-init array [OK]
      Hint: Use new int[size]() and delete[] for arrays [OK]
      Common Mistakes:
      • Using delete instead of delete[] for arrays
      • Mixing malloc/free with new/delete
      • Allocating single int instead of array
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard