[問題] 關於access violation
看板C_and_CPP (C/C++)作者kkroy (☆㊣↖煞氣ㄟ阿喂↘ξ★)時間16年前 (2010/01/31 20:19)推噓3(3推 0噓 8→)留言11則, 5人參與討論串2/2 (看更多)
遇到的問題: (題意請描述清楚)
我的開發平台為 VS 2008
我在執行程式時,會大量運用到記憶體,且執行大迴圈為10^8次,內含小迴圈暫且不提。
有用動態記憶體配置,建立 List跟宣告 物件array。程式碼敘述如下:
int main(){
//// Statements ////
Node* ptr = new Node[N];
Scheduler God;
//// Creat list ////
LIST* list = creatLIST(cmpTime);
God.execute(ptr, list); // 這行function 就是跑10^8次迴圈的 func //
.......
destoryList(list); // 釋放 list 的 memory //
delete [] ptr; // 釋放 ptr 的memory //
return 0;
}
我的問題是如果程式只要執行一次,那沒問題。但是我想要將 execute(ptr, list)
這個 member function 執行多次,再取平均以求得較準確結果,程式修改一下:
.....
//// 比方說 跑10次 ////
for( int i =0; i<10; i++){
//// Statements ////
Node* ptr = new Node[N];
Scheduler God;
//// Creat list ////
LIST* list = creatLIST(cmpTime);
God.execute(ptr, list); // 這行function 就是跑10^8次迴圈的 func //
.......
destoryList(list); // 釋放 list 的 memory //
delete [] ptr; // 釋放 ptr 的memory //
}
....
我記憶體還是有借有還,但是執行一次過後正確,隨即出現access violation,
然後程式掛掉....
不知道是什麼原因,
我在猜測是不是因為 Scheduler 這個class定義出來的 God 是上一輪迴圈的,
然後在下一輪迴圈 Scheduler 這個class沒有被 destruct掉,就又再定義一次God
所以導致access violation,
錯誤訊息顯示:Unhandled exception at 0x6bd912b4 (msvcr90d.dll) in test.exe:
0xC0000005: Access violation reading location 0x0000001c.
不曉得是不是這樣,希望各位指點一下,
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.144.18
※ 編輯: kkroy 來自: 140.113.144.18 (01/31 20:38)
→
01/31 20:39, , 1F
01/31 20:39, 1F
→
01/31 20:39, , 2F
01/31 20:39, 2F
→
01/31 20:40, , 3F
01/31 20:40, 3F
※ 編輯: kkroy 來自: 140.113.144.18 (01/31 20:40)
→
01/31 21:15, , 4F
01/31 21:15, 4F
推
01/31 23:03, , 5F
01/31 23:03, 5F
推
01/31 23:06, , 6F
01/31 23:06, 6F
→
01/31 23:07, , 7F
01/31 23:07, 7F
→
01/31 23:53, , 8F
01/31 23:53, 8F
→
01/31 23:53, , 9F
01/31 23:53, 9F
推
02/01 00:24, , 10F
02/01 00:24, 10F
→
02/01 00:29, , 11F
02/01 00:29, 11F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章