[問題] 沒new導致heap
寫了class若有需要物件,我習慣都會用new
我一直以為用new或沒用 差別在於 配了記憶體之後 物件call method
物件->method 及 物件.method 使用上的差別而已
但我在迴圈內要new物件 兩種寫法有為何會有差別
ex.
class A{
A(int,int);
functionA(int);
~A();
}
void main(){
int ba=1, la=2, bala=3;
A *A_Obj;
for(int i=0 ; i<10 ; i++)
{
A_Obj = new A(ba,la);
A_Obj->functionA(bala);
}
}
以上寫法可以正常執行
但如果沒使用new, main裡面改成
void main(){
int ba=1, la=2, bala=3;
for(int i=0 ; i<10 ; i++)
{
A A_Obj(ba,la);
A_Obj.functionA(bala);
}
}
迴圈跑到第2圈 就會有heap 的訊息出現
我觀念可能有錯,一直以為兩種寫法都可以,想知道為何不用new的
這狀況就不能跑,執行環境是VC++2008
感謝
=======================補充 分隔線=============================
如果放delete在迴圈內
void main(){
int ba=1, la=2, bala=3;
A *A_Obj;
for(int i=0 ; i<10 ; i++)
{
A_Obj = new A(ba,la);
A_Obj->functionA(bala);
delete A_Obj;
}
}
會發生跟第2種寫法,沒有用new一樣的問題 當執行到第2圈 程式會中止
且跳出訊息視窗:
Windows has triggered a breakpoint in XXX.exe.
This may be due to a corruption of the heap, which indicates a bug in
XXX.exe or any of the DLLs it has loaded.
this may also be due to the user pressing F12 while XXX.exe has focus.
================================================================
原本手頭有兩個projects一個是模擬project另一個是演算法project
現在要把模擬的 併到 演算法裡面 來開發另一個新的演算法
我把舊的演算法的project當主程式
當跑到for裡的建構子就是去執行模擬的那個project
兩分code 併起來 好亂>.<...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 161.130.178.135
推
03/23 16:12, , 1F
03/23 16:12, 1F
推
03/23 16:13, , 2F
03/23 16:13, 2F
→
03/23 17:16, , 3F
03/23 17:16, 3F
→
03/23 17:18, , 4F
03/23 17:18, 4F
→
03/23 17:24, , 5F
03/23 17:24, 5F
推
03/23 17:31, , 6F
03/23 17:31, 6F
→
03/23 17:52, , 7F
03/23 17:52, 7F
推
03/23 17:53, , 8F
03/23 17:53, 8F
→
03/23 17:53, , 9F
03/23 17:53, 9F
※ 編輯: LinRungChuan 來自: 161.130.178.135 (03/23 18:12)
→
03/23 18:32, , 10F
03/23 18:32, 10F
推
03/23 18:33, , 11F
03/23 18:33, 11F
→
03/23 19:04, , 12F
03/23 19:04, 12F
→
03/23 19:05, , 13F
03/23 19:05, 13F
→
03/23 19:06, , 14F
03/23 19:06, 14F
→
03/23 19:07, , 15F
03/23 19:07, 15F
→
03/23 19:30, , 16F
03/23 19:30, 16F
推
03/23 20:59, , 17F
03/23 20:59, 17F
→
03/23 21:00, , 18F
03/23 21:00, 18F
討論串 (同標題文章)