標籤:bsp logs thread ++ blog 代碼 構造 調用 stream
建構函式調用建構函式是會問題的.
外層函數返回的記憶體, 與被調用的建構函式返回的記憶體並不是一個記憶體.
錯誤範例程式碼如下:
msg_log(const char *name, const char* thread_name, const char *cfg_file, int type = STREAM, int level = MSG_ERROR) : _name(name), _thread_name(thread_name), _level(level), _type(type), logfp(0), _set_process(false), _set_line(false), _set_file(false) { if(cfg_file) msg_log::cs_conf_file = cfg_file; init(type, level); pthread_mutex_init(&createfile_mutex,NULL); } msg_log(const char *name, const char *cfg_file, int type = STREAM, int level = MSG_ERROR) : _name(name), _level(level), _type(type), logfp(0), _set_process(false), _set_line(false), _set_file(false) { msg_log(name, "", cfg_file, type, level); }
太多年沒寫C++了, debug了好久, 才發現問題出在哪裡.
參考: http://www.cnblogs.com/chio/archive/2007/10/20/931043.html
[development][c++] C++建構函式調用建構函式