[問題] 全域動態陣列 釋放問題
請問我有靜態陣列改為一個動態陣列宣告為全域 (程式需要 一定要全域)
但是他的配置是在寫在aaa()裡面
所以我也把它的記憶體釋放擺在aaa()最後面
因為我的程式是用命令列跑大量次數
但是自從我把這個陣列從原本靜態改為動態後
自動跑到第三次就會出現當機 (如果手動單跑一次都不會)
我的配置如下
------main.cpp 中---------------------
main
{
for(i=0;i<100;i++) //要跑很多次
aaa(s);
}
--------AAA.cpp 中---------------------
Prev_info ***Shortest=new Prev_info**[2200]; //全域宣告
int aaa(int s)
{
int f1,f2;
for( f1=0;f1<2200;f1++)
{
Shortest[f1]=new Prev_info*[30];
}
for( f1=0;f1<2200;f1++)
{ for( f2=0;f2<30;f2++)
{ Shortest[f1][f2]=new Prev_info[500]; //配置
}
}
有一段程式給全部初始值0
.....
.....
.....
.....
int xx,yy;
for(xx=0;xx<2200;xx++)
{
for( yy=0;yy<30;yy++)
{
delete [] Shortest[xx][yy]; //釋放
}
delete [] Shortest[xx];
} delete [] Shortest;
}
----------------------------------------------------------
我原本想說反正整個程式還沒結束,就先不要釋放,反正每次進aaa我都會再給初始值
不怕數值錯誤,可是就算拿掉delete那段
也是會在跑到兩三次的時候當機
我懷疑是配置全域造成釋放有問題,可是卻能正常跑過二次
覺得很奇怪 目前也想不出問題出在哪裡
謝謝幫忙看完
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.179.7
→
08/13 17:21, , 1F
08/13 17:21, 1F
→
08/13 17:35, , 2F
08/13 17:35, 2F
推
08/13 18:09, , 3F
08/13 18:09, 3F
推
08/13 18:14, , 4F
08/13 18:14, 4F
→
08/13 18:15, , 5F
08/13 18:15, 5F
→
08/13 18:15, , 6F
08/13 18:15, 6F
→
08/13 18:16, , 7F
08/13 18:16, 7F
→
08/13 18:18, , 8F
08/13 18:18, 8F
→
08/13 18:18, , 9F
08/13 18:18, 9F
→
08/13 18:20, , 10F
08/13 18:20, 10F
推
08/13 18:29, , 11F
08/13 18:29, 11F
→
08/13 18:29, , 12F
08/13 18:29, 12F
→
08/13 18:29, , 13F
08/13 18:29, 13F
→
08/13 18:34, , 14F
08/13 18:34, 14F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章