[問題] 動態記憶體配置(opencv)

看板C_and_CPP (C/C++)作者 (還是朋友?)時間14年前 (2012/01/01 23:54), 編輯推噓3(3050)
留言53則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) devc++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) opencv 問題(Question): 只能跑12張 錯誤結果(Wrong Output): 跳出警告 我想要讀取圖的每個點RGB值 但只要讀了超過12次@@就會當機 我每讀一張圖 也有歸還記憶體配置 還是不行 http://codepad.org/7bD83WMK 主要程式碼 (裡面的改成讀同一張圖40次也不行...) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.109.77

01/01 23:57, , 1F
警告的訊息寫的是什麼?
01/01 23:57, 1F

01/01 23:59, , 2F
unknow software exception
01/01 23:59, 2F

01/02 00:23, , 3F
如果另外寫值進去,先不用opencv可以嗎?
01/02 00:23, 3F

01/02 00:28, , 4F
一樣ㄒㄒ 會盪 我明明有free阿
01/02 00:28, 4F

01/02 00:34, , 5F
我正常跑完40次...
01/02 00:34, 5F

01/02 00:35, , 6F
你圖多大@@?
01/02 00:35, 6F

01/02 00:36, , 7F
2144*1420,話說我觀察記憶體會一直增加
01/02 00:36, 7F

01/02 00:40, , 8F
我RAM只有2G 一口一 我有歸還阿
01/02 00:40, 8F

01/02 00:41, , 9F
那如果你把給值拿掉,只calloc跟free呢?
01/02 00:41, 9F

01/02 00:47, , 10F
@@ 疑可以 可是這樣就沒值可以讀了ㄒㄒ
01/02 00:47, 10F

01/02 00:49, , 11F
就測試看看是不是真的是分配的問題
01/02 00:49, 11F

01/02 00:50, , 12F
如果可以的話那應該不是分配的問題
01/02 00:50, 12F

01/02 00:51, , 13F
calloc應該不會被opt吧...
01/02 00:51, 13F

01/02 00:52, , 14F
cvReleaseImage ??
01/02 00:52, 14F

01/02 00:54, , 15F
樓上@@那個我free後 也有做說
01/02 00:54, 15F

01/02 01:05, , 16F
free(dataR); --> 要拉出回圈吧?另為什麼要二個int i?
01/02 01:05, 16F

01/02 01:07, , 17F
他讀圖在for裡面,在for內才知道大小才能分配
01/02 01:07, 17F

01/02 01:09, , 18F
兩個i應該是手誤...
01/02 01:09, 18F

01/02 01:13, , 19F
XD 第一個i沒效果 控制次數爾以
01/02 01:13, 19F

01/02 01:13, , 20F
建議還是改不同的名稱...
01/02 01:13, 20F

01/02 01:14, , 21F
要用次數用個counter也不錯
01/02 01:14, 21F

01/02 01:15, , 22F
恩 ~自己的有改k 了 到底是CV問題 還是不給配置呢ㄒㄒ
01/02 01:15, 22F

01/02 01:23, , 23F
話說你要讀值,怎麼不直接用http://ppt.cc/V(bN
01/02 01:23, 23F

01/02 01:23, , 24F
還要先讀出來?
01/02 01:23, 24F

01/02 02:16, , 25F
每次 cvLoadImage 後都要 cvReleaseImage
01/02 02:16, 25F

01/02 02:19, , 26F
你單純讀圖可以跑嗎 ? (without calloc)
01/02 02:19, 26F

01/02 03:10, , 27F
我是用get2D阿@@~
01/02 03:10, 27F

01/02 03:12, , 28F
CvScalar TempPixel=cvGet2D(InImage,i,j);有跑到這就
01/02 03:12, 28F

01/02 03:12, , 29F
會當機
01/02 03:12, 29F

01/02 03:22, , 30F
我也有cvReleaseImage(&Image) 忘了貼上去
01/02 03:22, 30F

01/02 03:51, , 31F
d大 所以你的40次RGB值都有進去摟?
01/02 03:51, 31F

01/02 10:19, , 32F
我沒去確定40次都有,只確定跑過
01/02 10:19, 32F

01/02 11:25, , 33F
= =好怪阿 ....我試兩台電腦都不能跑QQ
01/02 11:25, 33F

01/02 11:25, , 34F
d大可以看一下你的程式碼嗎@@
01/02 11:25, 34F

01/02 12:11, , 35F
free要在for外.你calloc()一次,但是free超過一次,
01/02 12:11, 35F

01/02 12:20, , 36F
for 外就不用free了阿@@~ *R*G*B 是在迴圈內才宣告
01/02 12:20, 36F

01/02 12:37, , 37F
我看錯他的 '}' 沒對齊, 他的calloc/free是成對沒錯
01/02 12:37, 37F

01/02 13:36, , 38F
在for外也要free,你的是動態分配,不是靜態
01/02 13:36, 38F

01/02 13:42, , 39F
for 外編譯就不會過了說~>"<D大的能跑可以給看看嗎
01/02 13:42, 39F

01/02 14:22, , 40F
你宣告在裡面,free放外面當然不行= =
01/02 14:22, 40F

01/02 14:22, , 41F
找不到東西free啊...
01/02 14:22, 41F

01/02 14:50, , 42F
是阿@@ 所以我放裡面阿
01/02 14:50, 42F

01/02 15:30, , 43F
目前是確定get2D問題ㄒㄒ 記憶體應該是沒錯
01/02 15:30, 43F

01/02 18:10, , 44F
你看一下有沒有超出範圍
01/02 18:10, 44F

01/02 19:17, , 45F
@@都用link了應該不會有這問題
01/02 19:17, 45F

01/02 19:55, , 46F
你用get如果超出範圍opencv會給錯誤
01/02 19:55, 46F

01/02 20:00, , 47F
@@那應該第一次就會死當了吧.....
01/02 20:00, 47F

01/02 20:04, , 48F
我是用2.3把原本的for放進去而已
01/02 20:04, 48F

01/02 20:20, , 49F
2.3版? ㄒㄒ我是1.0版
01/02 20:20, 49F

01/02 20:23, , 50F
為什麼有新版不用新版...
01/02 20:23, 50F

01/02 22:31, , 51F
><"2.0我可以跑到83個 我其實要跑100個說
01/02 22:31, 51F

01/02 22:34, , 52F
沒試過跑這麼多次,你在用看看2.3版吧,說不定有改過
01/02 22:34, 52F

01/02 22:38, , 53F
100次正常
01/02 22:38, 53F
文章代碼(AID): #1F086-LW (C_and_CPP)
文章代碼(AID): #1F086-LW (C_and_CPP)