libco
libco copied to clipboard
用co_free销毁共享栈协程时产生内存泄漏
原实现:
void co_free( stCoRoutine_t *co )
{
if (!co->cIsShareStack)
{
free(co->stack_mem->stack_buffer);
free(co->stack_mem);
}
free( co );
}
建议修改为:
void co_free( stCoRoutine_t *co )
{
if (!co->cIsShareStack)
{
free(co->stack_mem->stack_buffer);
free(co->stack_mem);
} else {
if (co->stack_mem->occupy_co == co) {
co->stack_mem->occupy_co = NULL;
}
if (co->save_buffer)
{
free(co->save_buffer), co->save_buffer = NULL;
}
}
free( co );
}
这是我在libco基础上结合protobuf开发的rpc库libcorpc。包含rpc的服务端和客户端库。目的是简化分布式服务器间的消息通讯和处理。 其中的co路径下是对libco库的改版。欢迎指正!