Bird
Raised Fist0
C++programming~20 mins

new operator in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Master of new operator
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of dynamic array allocation
What is the output of this C++ code snippet?
C++
#include <iostream>
int main() {
    int* arr = new int[3]{1, 2, 3};
    std::cout << arr[1] << std::endl;
    delete[] arr;
    return 0;
}
A3
B1
C2
DCompilation error
Attempts:
2 left
💡 Hint
Remember that array indexing starts at 0.
❓ Predict Output
intermediate
2:00remaining
Output of new operator with class object
What will this program print?
C++
#include <iostream>
class Box {
public:
    int length;
    Box(int l) : length(l) {}
};
int main() {
    Box* b = new Box(10);
    std::cout << b->length << std::endl;
    delete b;
    return 0;
}
ARuntime error
B0
CCompilation error
D10
Attempts:
2 left
💡 Hint
Check how the constructor initializes the length.
❓ Predict Output
advanced
2:00remaining
Output when forgetting to delete dynamic memory
What is the output of this program?
C++
#include <iostream>
int main() {
    int* p = new int(5);
    *p = 10;
    std::cout << *p << std::endl;
    // no delete called
    return 0;
}
A10
B5
CCompilation error
DRuntime error due to memory leak
Attempts:
2 left
💡 Hint
The program prints the value pointed by p before exiting.
❓ Predict Output
advanced
2:00remaining
Output of new operator with placement new
What will this program output?
C++
#include <iostream>
#include <new>
int main() {
    char buffer[sizeof(int)];
    int* p = new(buffer) int(42);
    std::cout << *p << std::endl;
    p->~int();
    return 0;
}
A0
B42
CCompilation error
DRuntime error
Attempts:
2 left
💡 Hint
Placement new constructs an object in pre-allocated memory.
🧠 Conceptual
expert
2:00remaining
What error occurs when deleting non-dynamically allocated memory?
Consider this code snippet: int x = 5; int* p = &x; delete p; What happens when this code runs?
AUndefined behavior, likely runtime error
BDeletes x safely, no error
CCompilation error because delete cannot be used on stack variables
DMemory leak occurs
Attempts:
2 left
💡 Hint
delete should only be used on memory allocated with new.

Practice

(1/5)
1. What does the new operator do in C++?
easy
A. Allocates memory dynamically and returns a pointer to it
B. Deletes a variable from memory
C. Declares a normal variable on the stack
D. Copies data from one variable to another

Solution

  1. Step 1: Understand the purpose of new

    The new operator is used to allocate memory on the heap during program execution.
  2. Step 2: Identify what new returns

    It returns a pointer to the allocated memory so the program can use it.
  3. Final Answer:

    Allocates memory dynamically and returns a pointer to it -> Option A
  4. Quick Check:

    new = allocate memory [OK]
Hint: Remember: new creates memory and gives a pointer [OK]
Common Mistakes:
  • Confusing new with delete
  • Thinking new declares stack variables
  • Assuming new copies data
2. Which of the following is the correct syntax to allocate an integer using new?
easy
A. int p = new int;
B. int p = new int();
C. int *p = new int[];
D. int *p = new int;

Solution

  1. Step 1: Check pointer declaration

    Using new returns a pointer, so the variable must be a pointer type like int *.
  2. Step 2: Verify syntax correctness

    int *p = new int; correctly allocates an int and assigns its address to p.
  3. Final Answer:

    int *p = new int; -> Option D
  4. Quick Check:

    Pointer = new type [OK]
Hint: new returns pointer, so use pointer variable [OK]
Common Mistakes:
  • Declaring variable without pointer
  • Using parentheses incorrectly
  • Assigning new to non-pointer variable
3. What is the output of this code?
int *arr = new int[3]{10, 20, 30};
std::cout << arr[1] << std::endl;
delete[] arr;
medium
A. 20
B. 10
C. 30
D. Runtime error

Solution

  1. Step 1: Understand array allocation with new

    The code creates an array of 3 integers with values 10, 20, 30.
  2. Step 2: Access the second element

    Array indexing starts at 0, so arr[1] is the second element, which is 20.
  3. Final Answer:

    20 -> Option A
  4. Quick Check:

    arr[1] = 20 [OK]
Hint: Remember array index starts at 0 [OK]
Common Mistakes:
  • Confusing index 1 with index 0
  • Forgetting to use delete[] for arrays
  • Expecting runtime error without cause
4. Identify the error in this code snippet:
int *p = new int;
*p = 5;
delete p;
delete p;
medium
A. Incorrect use of new operator
B. Missing initialization of pointer
C. Double deletion of the same pointer
D. No error, code is correct

Solution

  1. Step 1: Analyze pointer allocation and deletion

    Pointer p is allocated memory and deleted once correctly.
  2. Step 2: Check for repeated delete

    Deleting p a second time causes undefined behavior (double deletion error).
  3. Final Answer:

    Double deletion of the same pointer -> Option C
  4. Quick Check:

    delete twice = error [OK]
Hint: Delete pointer only once to avoid errors [OK]
Common Mistakes:
  • Deleting pointer twice
  • Not deleting allocated memory
  • Confusing delete and delete[]
5. You want to create a dynamic 2D array of integers with 3 rows and 2 columns using new. Which code correctly allocates and deallocates this array?
hard
A. int *arr = new int[3*2]; // use arr delete arr;
B. int **arr = new int*[3]; for(int i=0; i<3; i++) arr[i] = new int[2]; // use arr for(int i=0; i<3; i++) delete[] arr[i]; delete[] arr;
C. int **arr = new int[3][2]; // use arr delete[] arr;
D. int arr[3][2]; // use arr // no delete needed

Solution

  1. Step 1: Allocate 2D array dynamically

    int **arr = new int*[3]; for(int i=0; i<3; i++) arr[i] = new int[2]; // use arr for(int i=0; i<3; i++) delete[] arr[i]; delete[] arr; correctly creates an array of pointers for rows, then allocates each row as an array of ints.
  2. Step 2: Properly deallocate memory

    Each row is deleted with delete[], then the array of pointers is deleted with delete[].
  3. Final Answer:

    Uses an array of pointers, allocating each row separately -> Option B
  4. Quick Check:

    Nested new and delete[] for 2D arrays [OK]
Hint: Use nested new and delete[] for 2D arrays [OK]
Common Mistakes:
  • Using delete instead of delete[] for arrays
  • Not deleting all allocated rows
  • Trying to allocate 2D array with single new incorrectly
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