記錄乙個很奇怪的bug,待解決

2021-10-08 16:18:18 字數 1314 閱讀 5873

乙個很簡單的矩陣求冪模板類的程式,但是在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...