Free strings returned by XGetAtomName to avoid leakage.

Call XFree() on the string returned by XGetAtomName() in the Linux part of the Shell to avoid a memory leak.
Isn't it always allowed to assign 0 to a pointer in C++? That is, I don't understand why it would generate a warning.