[問題] C除錯求助, 應該是指標和陣列的問題...
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC Linux
問題(Question):
我在寫一個sparse matrix的kronecker tensor product函數(kron)
類似matlab的kron函數
我的 kron(&M3, &M2, &M1) 就是matlab的 M3 = kron(M2, M1)
其中&M1, &M2, &M3是pass by address
我現在用的兩個矩陣分別是
M1
0 2 0
1 0 1
M2
1 0
0 1
0 0
預期得到M3
0 2 0 0 0 0
1 0 1 0 0 0
0 0 0 0 2 0
0 0 0 1 0 1
0 0 0 0 0 0
0 0 0 0 0 0
我的問題是,當程式執行到第41行時,M3的值都是正確的
但是一旦開始執行printMatrix這個函數,M3的資料內容就會背修改
餵入的資料(Input):
M1 M2
0 2 0 0 1
1 0 1 1 0
0 0
預期的正確結果(Expected Output):
M3在被修改之前的資料是(正確的結果):
6-6 matrix
i[] j[] entries:
1 0 1
0 1 2
1 2 1
3 3 1
2 4 2
3 5 1
若把M3寫成矩陣就是
0 2 0 0 0 0
1 0 1 0 0 0
0 0 0 0 2 0
0 0 0 1 0 1
0 0 0 0 0 0
0 0 0 0 0 0
錯誤結果(Wrong Output):
M3資料被修改,看起來是記憶體的問題
M3.i[] j[] 裡面的數值都亂跳...
程式碼(Code):(請善用置底文網頁, 記得排版)
http://www.largedocument.com/1/4ba62664/matrixStruct.c
補充說明(Supplement):
我本來以為問題是因為M3的malloc寫在kron函數裡面
所以把&M3傳過去的時候沒有確定的記憶體大小
但是我有試過把在main裡面就分配記憶體給M3,也沒有用
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.37.171.189
→
03/30 17:51, , 1F
03/30 17:51, 1F
→
03/30 18:35, , 2F
03/30 18:35, 2F
→
03/30 18:36, , 3F
03/30 18:36, 3F
→
03/30 18:37, , 4F
03/30 18:37, 4F
推
03/30 18:56, , 5F
03/30 18:56, 5F
→
03/30 18:57, , 6F
03/30 18:57, 6F
→
03/30 18:58, , 7F
03/30 18:58, 7F
→
03/30 18:59, , 8F
03/30 18:59, 8F
→
03/30 19:01, , 9F
03/30 19:01, 9F
推
03/30 19:01, , 10F
03/30 19:01, 10F
→
03/30 19:02, , 11F
03/30 19:02, 11F
→
03/30 19:03, , 12F
03/30 19:03, 12F
→
03/30 19:03, , 13F
03/30 19:03, 13F
→
03/30 19:04, , 14F
03/30 19:04, 14F
→
03/30 19:04, , 15F
03/30 19:04, 15F
推
03/30 19:05, , 16F
03/30 19:05, 16F
→
03/30 19:06, , 17F
03/30 19:06, 17F
→
03/30 19:06, , 18F
03/30 19:06, 18F