開發平台(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