Dynamic memory allocation and garbage collection(MCQs)

What function is used in C++ to allocate memory dynamically? a) malloc b) calloc c) new d) alloc Answer: c) new Which function is used to deallocate memory allocated by new in C++? a) delete b) free c) release d) remove Answer: a) delete What does new[] do in C++? a) Allocates memory for a single object b) Allocates memory for an array of objects c) Deallocates memory for an array of objects d) Allocates memory for a variable Answer: b) Allocates memory for an array of objects What does delete[] do in C++? a) Deallocates memory for a single object b) Deallocates memory for an array of objects c) Allocates memory for an array of objects d) Allocates memory for a single object Answer: b) Deallocates memory for an array of objects Which operator is used to allocate memory dynamically in C? a) malloc b) new c) calloc d) alloc Answer: a) malloc What is the purpose of calloc in C? a) Allocate memory and initialize it to zero b) Allocate memory without initializing c) Deallocate memory d) Reallocate memory Answer: a) Allocate memory and initialize it to zero Which function is used to deallocate memory allocated by malloc in C? a) free b) delete c) release d) remove Answer: a) free What is a potential problem of using malloc and free in C? a) Memory leaks b) Memory fragmentation c) Stack overflow d) Overflow errors Answer: a) Memory leaks What is a memory leak? a) Memory that is not properly released b) Memory that is deallocated prematurely c) Memory that is allocated but never used d) Memory that is shared across processes Answer: a) Memory that is not properly released Which of the following is NOT a characteristic of dynamic memory allocation? a) Allocates memory at runtime b) Requires explicit deallocation c) Allocates memory on the stack d) Allows for flexible memory usage Answer: c) Allocates memory on the stack In C++, how do you allocate memory for an integer using new? a) int* p = new int; b) int p = new int; c) int* p = malloc(sizeof(int)); d) int p = malloc(sizeof(int)); Answer: a) int* p = new int; Which method is used to resize dynamically allocated memory in C++? a) realloc b) resize c) extend d) expand Answer: a) realloc In C++, which of the following is a correct syntax to delete a single object allocated with new? a) delete p; b) delete[] p; c) free(p); d) remove(p); Answer: a) delete p; Which of the following can lead to undefined behavior in dynamic memory allocation? a) Double free b) Single free c) Allocating memory d) Releasing memory Answer: a) Double free In which case should you use delete instead of delete[]? a) When deallocating memory for an array b) When deallocating memory for a single object c) When allocating memory for an array d) When reallocating memory Answer: b) When deallocating memory for a single object Which of the following is a valid operation for memory management in C++? a) new[] and delete[] b) malloc and delete c) calloc and free d) realloc and new Answer: a) new[] and delete[] Which of the following is an example of automatic memory management? a) Garbage collection b) Manual malloc and free c) new and delete d) realloc Answer: a) Garbage collection In which programming language is garbage collection typically automatic? a) C b) C++ c) Java d) Assembly Answer: c) Java What does a garbage collector do? a) Reclaims memory that is no longer in use b) Allocates memory dynamically c) Manages stack memory d) Handles CPU scheduling Answer: a) Reclaims memory that is no longer in use Which of the following is NOT a goal of garbage collection? a) Prevent memory leaks b) Improve program performance c) Reclaim unused memory d) Optimize CPU usage Answer: d) Optimize CPU usage What is a common approach used by garbage collectors to determine if an object is still in use? a) Reference counting b) Memory fragmentation c) Allocation tracking d) Cache management Answer: a) Reference counting Which of the following is a method used by garbage collectors to find objects that are still in use? a) Mark-and-sweep b) Memory paging c) Direct mapping d) Load balancing Answer: a) Mark-and-sweep In the mark-and-sweep garbage collection algorithm, what happens during the “mark” phase? a) Objects are marked as in use b) Objects are deleted c) Memory is allocated d) Objects are copied to a new location Answer: a) Objects are marked as in use In the mark-and-sweep garbage collection algorithm, what happens during the “sweep” phase? a) Unmarked objects are deallocated b) All objects are marked c) Memory is allocated d) Objects are copied Answer: a) Unmarked objects are deallocated What does the term “stop-the-world” mean in the context of garbage collection? a) The program is halted while garbage collection is performed b) The garbage collector runs in the background c) The program continues running while collecting garbage d) Garbage collection happens in a different process Answer: a) The program is halted while garbage collection is performed Which of the following is a disadvantage of garbage collection? a) It can introduce overhead and pause times b) It guarantees that all memory is always reclaimed c) It improves the performance of all programs d) It prevents memory fragmentation Answer: a) It can introduce overhead and pause times What is reference counting in garbage collection? a) Counting the number of references to an object to determine if it is still in use b) Counting the total memory used by the program c) Counting the number of allocations and deallocations d) Counting the number of objects in memory Answer: a) Counting the number of references to an object to determine if it is still in use What is the primary purpose of the realloc function in C? a) To allocate new memory b) To resize an existing block of memory c) To deallocate memory d) To allocate memory for an array Answer: b) To resize an existing block of memory Which of the following is a feature of a good garbage collector? a) It should minimize pause times for the program b) It should increase memory usage c) It should manually manage memory d) It should require frequent manual intervention Answer: a) It should minimize pause times for the program What is a potential problem with reference counting garbage collection? a) It cannot handle cyclic references b) It cannot reclaim memory quickly c) It has high overhead d) It requires frequent pauses Answer: a) It cannot handle cyclic references Which of the following is NOT typically managed by garbage collectors? a) Stack memory b) Heap memory c) Global variables d) Local variables Answer: a) Stack memory In C++, what is the purpose of using the std::shared_ptr smart pointer? a) To automatically manage memory with reference counting b) To allocate memory dynamically c) To manage stack memory d) To prevent memory leaks manually Answer: a) To automatically manage memory with reference counting What does std::unique_ptr in C++ do? a) Automatically manages a single object’s lifetime with exclusive ownership b) Allows shared ownership of an object c) Allocates memory for an array d) Tracks memory leaks Answer: a) Automatically manages a single object’s lifetime with exclusive ownership What happens if you use delete on a pointer that was allocated with new[]? a) Undefined behavior b) Memory is correctly deallocated c) A runtime error occurs d) Memory is leaked Answer: a) Undefined behavior Which C++ feature can be used to ensure that memory allocated with new is properly deallocated even if an exception occurs? a) RAII (Resource Acquisition Is Initialization) b) try and catch blocks c) Manual memory management d) Garbage collection Answer: a) RAII (Resource Acquisition Is Initialization) What is the primary purpose of std::weak_ptr in C++? a) To break circular references while using std::shared_ptr b) To allocate memory dynamically c) To manage stack memory d) To automatically manage memory with reference counting Answer: a) To break circular references while using std::shared_ptr What does the term “heap” refer to in memory management? a) Memory allocated at runtime b) Memory allocated at compile time c) Memory that is managed automatically by the stack d) Memory used for global variables Answer: a) Memory allocated at runtime Which of the following is a method to manually manage dynamic memory in C++? a) new and delete b) malloc and free c) calloc and realloc d) All of the above Answer: d) All of the above In C++, which smart pointer is most appropriate for managing the lifetime of a single object that is not shared? a) std::unique_ptr b) std::shared_ptr c) std::weak_ptr d) std::auto_ptr Answer: a) std::unique_ptr What is the role of std::auto_ptr in C++? a) To automatically manage the lifetime of a dynamically allocated object b) To provide shared ownership of an object c) To break cyclic references d) To manage stack memory Answer: a) To automatically manage the lifetime of a dynamically allocated object Which of the following statements about garbage collection is FALSE? a) It can automatically reclaim memory b) It is available in all programming languages c) It can reduce memory leaks d) It can sometimes introduce performance overhead Answer: b) It is available in all programming languages What does std::allocator do in C++? a) Provides a way to allocate and deallocate memory b) Manages garbage collection c) Allocates memory for global variables d) Handles memory fragmentation Answer: a) Provides a way to allocate and deallocate memory Which of the following is a challenge with manual memory management? a) Ensuring memory is freed correctly b) Memory is automatically managed c) Garbage collection is handled automatically d) Automatic handling of cyclic references Answer: a) Ensuring memory is freed correctly In the context of dynamic memory management, what is a “fragmentation” issue? a) Memory is divided into small unusable blocks b) Memory is not allocated c) Memory is automatically reclaimed d) Memory is allocated for global variables Answer: a) Memory is divided into small unusable blocks Which of the following is a common feature of memory leaks? a) The program consumes more memory over time b) The program runs out of stack space c) The program experiences segmentation faults d) The program terminates unexpectedly Answer: a) The program consumes more memory over time What is the role of std::make_shared in C++? a) To create a shared pointer and allocate memory for the object b) To manage stack memory c) To automatically manage the lifetime of a single object d) To deallocate memory for a shared pointer Answer: a) To create a shared pointer and allocate memory for the object Which C++ feature can be used to manage memory for arrays dynamically? a) std::vector b) std::list c) std::map d) std::deque Answer: a) std::vector What is the purpose of the std::string class in C++ with respect to memory management? a) To manage dynamic memory for strings automatically b) To allocate fixed-size memory for strings c) To manually handle memory for string operations d) To manage global variables Answer: a) To manage dynamic memory for strings automatically What should be used to handle exceptions in C++ when dealing with dynamic memory allocation? a) RAII (Resource Acquisition Is Initialization) b) try and catch blocks c) Manual memory management d) Garbage collection Answer: a) RAII (Resource Acquisition Is Initialization) Which of the following best describes a “dangling pointer”? a) A pointer that points to memory that has been deallocated b) A pointer that points to a valid memory address c) A pointer that is correctly initialized d) A pointer that is not used Answer: a) A pointer that points to memory that has been deallocated
All Copyrights Reserved 2025 Reserved by T4Tutorials