1 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
最直接的解決辦法:
std::vector<signed char> make_byte_array(std::vector<signed char> array) const
{
array.push_back('\n');
array.push_back('\r');
return array;
}
發(fā)生了什么:array按值傳遞,因此會(huì)自動(dòng)復(fù)制。我們利用此復(fù)制來消除在函數(shù)內(nèi)部手動(dòng)復(fù)制的需要。然后我們附加換行符和回車符并返回結(jié)果vector。
要獲取存儲(chǔ)在向量內(nèi)的數(shù)組,請(qǐng)使用 vector的data方法
signed char * data = result_vector.data();
或者在 c++11 之前的世界中,我從未見過這個(gè)技巧不起作用:
signed char * data = &result_vector[0];
那么……出了什么問題?在 C++ 中返回?cái)?shù)組很困難。與 C++ 中的其他所有內(nèi)容不同,由于Array Decay ,數(shù)組默認(rèn)通過引用傳遞。retval衰減為一個(gè)指針,該指針被返回,并retval超出范圍并被銷毀,留下一個(gè)指向無效內(nèi)存的指針。
添加回答
舉報(bào)