What is a virtual method in C++? Explain its purpose in object-oriented programming, how it enables polymorphism, and the difference between virtual and non-virtual methods. Additionally, discuss how the virtual keyword affects method overriding in derived classes and the implications for memory management and performance.
Focus on the technical aspects, including definitions, examples, and potential pitfalls associated with virtual methods.