乙個很簡單的矩陣求冪模板類的程式,但是在vector> temp(n,vector(n));這一句不能執行,會卡死。下面是完整的**和輸出
// ### 方陣的冪運算,n * n 矩陣的m次冪
// * 1)使用類進行封裝
// * 2)使用c++操作符過載(可選)
// * 3)使用模板(可選)
// 你必須定義乙個 `main()` 函式入口。
#include #include using namespace std;
templateclass matrix
matrix(vector> m)
~matrix()
matrix operator * (matrix& m2)}}
matrix res(temp);
printf("%d\n",__line__);
return res;
} matrix operator ^(int m)
return matrix(temp);
}if(m == 1) return (*this);
matrix temp = (*this) ^ (m / 2);
temp = temp * temp;
if(m % 2 == 0)else
} void print();
int main()
}matrixmt(v);
mt.print();
matrixres = mt ^ 4;
res.print();
return 0;
}
**輸出(行號不是完全對應,a = 3根據a = 3這一行即可):
可見t代表int型別的確是傳進去了,但為什麼vector> temp(n,vector(n));會卡死不動呢。執行程式的同時,使用top命令檢視機器狀態,prog就是編譯後的程式,可以發現vector> temp(n,vector(n))這一句打滿了cpu,記憶體也一直嗖嗖的漲。
過了一會兒報了段錯誤
可見vector> temp(n,vector(n))這一句會不斷的申請記憶體。
但是為什麼會導致這個問題呢?是c++標準中的ub嗎?
乙個奇怪BUG的記錄(未根本解決)
乙個奇怪bug的記錄 未根本解決 md 基本邏輯 將資料夾下面的所有檔案路徑名,提取到乙個configfile檔案中,然後按行讀取處理。問題 對於bash資料集沒有問題,但是對於redis資料集 檔案比bash少 出現segmentfault,使用gdb定位到是記憶體釋放時候的錯誤 損壞了記憶體管理...
乙個奇怪的BUG
場景 兩個程序,子程序顯示一視窗,每次初始時,需要將子程序視窗銷毀後,再重新建立 其中,出現了這樣的bug,測試時出現了兩個子程序視窗,其中乙個不受程式控制 流程 nim chatroom chatroomform pchatform new chatroomform this pcurchatfo...
乙個很奇怪的問題
if equipmentlist.size 0 string equipidarray new string 3 for int i 0 i equipmentlist.size i element equipment element equipmentlist.get i string equip...