看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vc++ 2005 expression 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) python25.lib 問題(Question): 其實問題跟上面的東西不太相關 餵入的資料(Input): python list: [[1,2,3],[4,5,6],[7,8,9]] 預期的正確結果(Expected Output): python list的值吃入c array裡 錯誤結果(Wrong Output): 程式爆掉 cx000005 這種的 錯取位址的case 程式碼(Code):(請善用置底文網頁, 記得排版) 貼上重點 函式test: { long int row; long int col; double *array_2d; PyObject *LIST; pylist2array(LIST, &row, &col, &array_2d); } 宣告要用到的變數 然後放到下面這個函式 void pylist2array(PyObject *pylist, long int *M, long int *N, double **array_2d) M跟N是array_2d的row跟col 會在函式中給值 用來malloc用的 補充說明(Supplement): pylist2array函式中 程式會抓取pylist的row跟col 放到 *M 跟 *N 中 然後 *array_2d = (double *)malloc((*M)*(*N)*sizeof(double)); 動態配置 double a = PyFloat_AsDouble(pyitem); py值轉c double *array_2d[(*M)*i+j] = a; 放入陣列中 (i是row j是col) 結果只能放入第一個值… *array_2d[0] 之後就爆掉了 因為是第一次用** 觀念來可能還差一點 錯在哪看不出個所以然來( 黃色程式碼是自認為可能有誤的部份) 希望能提點一下 感恩 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.133.244