What happens if we mix new and free in C++? Last Updated : 22 Oct, 2020 Summarize Comments Improve Suggest changes Share Like Article Like Report As we know that new is used to create memory dynamically and it is the programmer's responsibility to delete the memory location explicitly and it is deleted by using the delete keyword. The syntax for creating memory at runtime using new keyword: int *ptr = new int; It will create a memory location for type int and returns its address. free() should only be used either for the pointers pointing to the memory allocated using malloc() or for a NULL pointer. What happens if we mix new and free in C++? We know that memory created by new keyword is deleted by using the delete keyword and memory created by malloc() is deleted by free(). new calls the constructor and delete calls the destructor for memory deallocation. Now, creating memory using new keyword and try to delete it using free() then the destructor will not be called and because of that memory and resources will not be free. And it will lead to memory and resources leak. Below is the program to analyze how free() and delete behaves: C++ // C++ program to illustrate the working // of memory allocation if new and free // are mixed #include <iostream> using namespace std; class A { private: int* p; public: // Default Constructor A() { cout << "Constructor is executed" << endl; p = new int; *p = 5; } // Destructor ~A() { cout << "Destructor is executed" << endl; // resource clean-up cleanup(); } // Member Function void cleanup() { cout << "Resource clean-" << "up completed" << endl; } // Function to display the value // of class variables void display() { cout << "value is: " << *p << endl; } }; // Driver Code int main() { // Create Object of class A A* ptr = new A(); ptr->display(); // Destructor will be called delete ptr; A* ptr1 = new A(); ptr1->display(); // No destructor will be called // hence no resource clean-up free(ptr); return 0; } Output: Constructor is executed value is: 5 Destructor is executed Resource clean-up completed Constructor is executed value is: 5 Explanation: In the above code, an object is created using new Keyword, and we are trying to delete this object using free(). It will not call the destructor for this object, and memory and resources of this object will not release. So, It is always suggested avoiding extra efforts and time by not mixing new and free in C++ program. Comment More infoAdvertise with us Y yogesh shukla 1 Follow Improve Article Tags : C++ Programs C++ C-Dynamic Memory Allocation Dynamic Memory Allocation C++-new and delete new and delete +2 More Practice Tags : CPP Similar Reads C++ Programming Language C++ is a computer programming language developed by Bjarne Stroustrup as an extension of the C language. It is known for is fast speed, low level memory management and is often taught as first programming language. It provides:Hands-on application of different programming concepts.Similar syntax to 5 min read Object Oriented Programming in C++ Object Oriented Programming - As the name suggests uses objects in programming. Object-oriented programming aims to implement real-world entities like inheritance, hiding, polymorphism, etc. in programming. The main aim of OOP is to bind together the data and the functions that operate on them so th 5 min read 30 OOPs Interview Questions and Answers [2025 Updated] Object-oriented programming, or OOPs, is a programming paradigm that implements the concept of objects in the program. It aims to provide an easier solution to real-world problems by implementing real-world entities such as inheritance, abstraction, polymorphism, etc. in programming. OOPs concept is 15 min read Inheritance in C++ The capability of a class to derive properties and characteristics from another class is called Inheritance. Inheritance is one of the most important features of Object-Oriented Programming in C++. In this article, we will learn about inheritance in C++, its modes and types along with the informatio 10 min read Dynamic Memory Allocation in C using malloc(), calloc(), free() and realloc() In C, a variable defined in a function is stored in the stack memory. The requirement of this memory is that it needs to know the size of the data to memory at compile time (before the program runs). Also, once defined, we can neither change the size nor completely delete the memory.To resolve this, 9 min read Vector in C++ STL C++ vector is a dynamic array that stores collection of elements same type in contiguous memory. It has the ability to resize itself automatically when an element is inserted or deleted.Create a VectorBefore creating a vector, we must know that a vector is defined as the std::vector class template i 7 min read Templates in C++ C++ template is a powerful tool that allows you to write a generic code that can work with any data type. The idea is to simply pass the data type as a parameter so that we don't need to write the same code for different data types.For example, same sorting algorithm can work for different type, so 9 min read C++ Interview Questions and Answers (2025) C++ - the must-known and all-time favourite programming language of coders. It is still relevant as it was in the mid-80s. As a general-purpose and object-oriented programming language is extensively employed mostly every time during coding. As a result, some job roles demand individuals be fluent i 15+ min read Operator Overloading in C++ in C++, Operator overloading is a compile-time polymorphism. It is an idea of giving special meaning to an existing operator in C++ without changing its original meaning.In this article, we will further discuss about operator overloading in C++ with examples and see which operators we can or cannot 8 min read C++ Classes and Objects In C++, classes and objects are the basic building block that leads to Object-Oriented programming in C++. We will learn about C++ classes, objects, look at how they work and how to implement them in our C++ program.C++ ClassesA class is a user-defined data type, which holds its own data members and 9 min read Like