what are the causes of memory leaks in c
//If an exception is raised between allocation and deallocation, memory leak will occur.
void f1() {
    int* ptr = new int;
    // do something which may throw an exception
    // we never get here if an exception is thrown
    delete ptr;
}
