PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 計算兩個二維陣列的乘積,但無法釋放記
作者:
yuwenche
(yuwenche)
2023-09-23 09:41:57
底下連結的程式片段是計算兩個二維陣列的乘積,此函式會被編譯成dll檔,供python程
式調用。 目前的情況是能傳回正確的乘積值,但因第45行之後未被執行,也就是宣告的
記憶體空間未被釋放,程式跑久就出現記憶體不足的問題了。請問有沒有辦法傳回正確值
且能釋放記憶體?
https://drive.google.com/file/d/1IdiUiNmFEVAb3AQfoEk3_20MDrDidO2o/view?usp=sharing
作者:
LPH66
(-6.2598534e+18f)
2023-09-23 10:11:00
注意你 40 行已經 return 了return 不只是表示什麼是回傳值, 更表示程式執行到此為止
作者:
lycantrope
(阿寬)
2023-09-23 14:37:00
不過就算return放在最後一行,這code也是www
作者:
stupid0319
(徵女友)
2023-09-23 15:08:00
把結果轉成字串,存在固定空間, python 處理字串
作者:
lycantrope
(阿寬)
2023-09-23 15:59:00
直接轉成numpy回傳就好,轉字串不如別用c
作者:
CoNsTaR
((const *))
2023-09-23 23:14:00
不能在 Python 那邊 allocate 好再把陣列傳進來嗎?
作者:
yuwenche
(yuwenche)
2023-09-26 11:42:00
感謝各位的建議,雖然此題目前仍無解。只好先用純python來解了,雖然速度上是慢了點。
作者:
lycantrope
(阿寬)
2023-09-26 13:44:00
#1b3a9dxv (C_and_CPP)
,兩年前類似問題....
作者: yvb
2023-09-27 18:22:00
樓上, 你貼的是本篇文章代碼耶...
作者:
lycantrope
(阿寬)
2023-09-27 22:38:00
我貼錯應該是
#1XRgBGl_ (C_and_CPP)
作者:
lc85301
(pomelocandy)
2023-09-28 00:00:00
不一樣啦,這次有 python 呀
作者:
tomsawyer
(安安)
2023-09-29 23:46:00
應該妳得拿到pointer後 又再呼叫一個free 的function定義在dll裡去釋放他
作者:
closer76
(克樓瑟)
2023-09-30 10:50:00
我有個想法:如果你能在 Python 裡處理這個被回傳的指標那你能不能再寫一個 C 的函式,專門做 free(),然後在Python 裡呼叫這個函式去釋放記憶體?
作者:
LPH66
(-6.2598534e+18f)
2023-09-30 23:16:00
其實樓上的做法不只是給 python, 它甚至是一般寫 DLL 時的做法: 當 DLL 有獲取資源的動作時, 一定也有一個釋放資源的函數, 這樣需求跟釋放都會在 DLL 裡
作者:
yuwenche
(yuwenche)
2023-10-03 18:41:00
感謝樓上兩位的意見,其實這方法我也試過,只不過程式在執行時發生錯誤。能把構想程式化嗎? 如果對python不熟,就在C語言的main()中調用即可,感謝。
作者:
lycantrope
(阿寬)
2023-10-03 21:58:00
先學寫C再去想python,再說有numpy為何不用
繼續閱讀
[問題] 類別、建構子問題
amamoimi
Re: [問題] BMP資料結構請教
YoursEver
Re: [問題] CreateFile()回傳INVALID_HANDLE_VALUE
closer76
Re: [分享] 物件導向 in C
wjungle
[問題] CreateFile()回傳INVALID_HANDLE_VALUE
xavier13540
[問題] BMP資料結構請教
IOP14759
[問題] opencv的cuda +cuda 核函數的問題
su27
[問題] QT的mkdir mkpath 為何不是static?
liu2007
[問題] 寫一個process來解析bmp圖檔
gn00618777
Re: [問題] 如何追查可能因MutilThtread下stackover
jasonwu
Links
booklink
Contact Us: admin [ a t ] ucptt.com