Understanding __attribute__((constructor)) and __attribute__((destructor)) in C and C++ | CodeTrail