-1
我有以下功能:單元測試,返回一個指針(C++)函數
unsigned* b_row_to_array(b_row r) {
unsigned a[] = {(r >> 8) & 3,
(r >> 6) & 3,
(r >> 4) & 3,
(r >> 2) & 3,
r & 3};
return a;
}
,我寫了下面的測試功能:
TEST_METHOD(BRowToArrayTest) {
unsigned expected[] = { 0, 0, 0, 0, 0 };
unsigned* computed = b_row_to_array(0);
for (int i = 0; i < 1; i++) {
Assert::AreEqual(expected[i], computed[i]);
}
}
但測試失敗,並稱「預期:< 0>,實際:< 42348989>「,其中Actual的值與每個測試都不同,所以它必須讀取錯誤的地址。我是否使用指針錯誤或者它讀取了界限,因爲測試函數不在同一個項目中?我該如何解決這個問題?
的一個'[]'壽命是多少? – 2015-04-03 15:01:32
嗯,我認爲你暗示着[]不再處於指針指向的地址處?如果是這樣,我該如何解決這個問題,因爲C++不允許直接返回數組。 – Arthelais 2015-04-03 15:04:07
另請參見http://stackoverflow.com/questions/7769998 – 2015-04-03 15:04:55