class Parameter_group_concat { public: String *separator; bool operator == (const Parameter_group_concat &source) { if( source.separator != separator ){ // … … if(memcmp(separator->c_ptr(), source.separator->c_ptr(), separator->length() ) != 0 ) return false; } } }; // 以上c_ptr()调用为separator的Ptr分配了内存,但是separator是由上层的yacc传递下来的,,yacc有自己的内存管理池,不会去删除separator的Ptr空间。导致此处c_ptr()申请的内存无人释放。