C++ Rule of Three: Fix a Double-Free Segfault from a Shallow Copy Constructor
C++ Rule of Three exercise — debug a Buffer class that manages heap-allocated memory and crashes with a segmentation fault because the compiler-generated copy constructor performs a shallow copy of a raw pointer. When a function receives a Buffer by value, the copy and the original share the same heap allocation. The copy's destructor frees the memory first; the original's destructor then double-frees the same address, causing undefined behavior. Learn why the Rule of Three requires implementing a copy constructor and copy assignment operator whenever you define a destructor, how to write a deep-copying copy constructor with new and memcpy, and how the self-assignment check prevents the assignment operator from freeing memory it is about to read. The broken class and the fully corrected version implementing all three special members are provided.
Комментарии