回來時,我有一個函數:核心轉儲錯誤,而從功能
void function(const string param1, string *p2param, string *retparam)
時,這是從main
調用,執行去,直到這個函數的最後一行,然後失敗,
Bus Error(coredump)
的函數使用指向字符串的指針執行一些字符串操作,然後將最終值傳遞給*retparam
。
的代碼是這樣aa.c有
string *f1;//global
string f2= "abc";//global
function_2()
{
stringstream aa;
*f1 += aa<<"test";
//similar concatenation
}
function(param1, *p2param, *retparam)
{
/* assign back the values*/
f1 =&f2;
//call to a function from bb.c
// from bb.c function_2() is in called
retparam = f1
}
我能得到的唯一信息是:
pstack core
$ pstack core
core 'core' of 4517: aa_test -t 745
ffffffff7c67109c __1cDstdMbasic_string4Ccn0ALchar_traits4Cc__n0AJallocator4Cc___2T5B6M_v_ (ffffffff7fffce98, 1002805fc, 10010cc90, 0, ffffffff7c8c3bd8, ffffffff7fffce98) + 14
0000000100004498 main (10010b000, 100000, ffffffff7fffce98, ffffffff7fffcf00, ffffffff7fffd288, ffffffff7fffd0b8) + 818
0000000100003a7c _start (0, 0, 0, 0, 0, 0) + 17c
是什麼原因造成這個錯誤?
感謝您的有價值的投入,最終解決了我的問題。
的問題是與字符串變量 代碼片段
void function(const string param1, string *p2param, string *retparam) {
//function to call from bb.c has prototype
//fun2(const char **str,stubfunc)
const char *l_str = param1.c_str();
fun2((const char **) &l_str,coverage_hook);
}
//this was ealier called as
//fun2((const char**) ¶m1,coverage_hook); hence was causing the core dump
//why?? still dont know :)
你的代碼沒有按」 t編譯,並不明顯如何使其工作。如果您提供展示您遇到問題的完整示例,它將更有幫助。 – 2012-01-04 05:35:38