[問題] new/delete
開發平台(Platform):
VC++
額外使用到的函數庫(Library Used):
問題(Question):
1. Memory leak
2. Memory 不同
(1) VTX* pVTXData = new VTX[2000];
(2) for(int i = 0 ; i < 100 ; i++)
{
VTX* pVTXData = new VTX[20];
}
都是2000筆資料 為什麼測出來的Memory會不同呢?
餵入的資料(Input):
Structure pointer
預期的正確結果(Expected Output):
New出來的Memory要全被放掉
錯誤結果(Wrong Output):
只放掉部分
程式碼(Code):(請善用置底文網頁, 記得排版)
struct VTX
{
float fPos[3];
float fAlpha;
float fMappingU;
...
}
struct AFrame
{
VTX* pVtx;
}
開始allocate
int nFrameCount = 1000; // 有1000 frames
int nVTXCount = 20; // 有20個 vtx
AFrame* pFrame = new AFrame[nFrameCount];
for(int i = 0 ; i < nVTXCount; i++)
{
pFrame[i].pVtx = new VTX[nVTXCount]; // 每一個frame去new出固定量的VTX
}
執行完準備delete
for(int i = 0 ; i < nFrameCount; i++)
{
delete pFrame[i].pVtx;//每一個frame將他的pVtx放掉(但其實有20個 希望可把20個全刪)
}
補充說明(Supplement):X
概念上是長成像以下的結構
然後最後再全部release
pFrame[0].pVtx[0], pFrame[0].pVTX[1], ... pFrame[0].pVTX[20]
pFrame[1].pVtx[0], pFrame[1].pVTX[1], ... pFrame[1].pVTX[20]
pFrame[2].pVtx[0], pFrame[2].pVTX[1], ... pFrame[2].pVTX[20]
...
pFrame[999].pVtx[0], pFrame[999].pVTX[1], ... pFrame[999].pVTX[20]
有試過delete AFrame[i].pVtx[0]但會顯示
Cannot convert from AFrame* to void*
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.240.168.39
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1401106991.A.9EE.html
※ 編輯: amy10062003 (111.240.168.39), 05/26/2014 20:25:03
→
05/26 20:29, , 1F
05/26 20:29, 1F
→
05/26 20:30, , 2F
05/26 20:30, 2F
→
05/26 21:51, , 3F
05/26 21:51, 3F
※ 編輯: amy10062003 (118.163.84.235), 05/27/2014 09:30:13
→
05/27 09:30, , 4F
05/27 09:30, 4F
→
05/27 09:31, , 5F
05/27 09:31, 5F
推
05/27 10:23, , 6F
05/27 10:23, 6F
→
05/27 11:16, , 7F
05/27 11:16, 7F
→
05/27 11:36, , 8F
05/27 11:36, 8F
→
05/27 11:37, , 9F
05/27 11:37, 9F
→
05/27 13:07, , 10F
05/27 13:07, 10F
→
05/27 13:08, , 11F
05/27 13:08, 11F
推
05/27 21:15, , 12F
05/27 21:15, 12F
→
05/28 09:49, , 13F
05/28 09:49, 13F
推
05/28 11:50, , 14F
05/28 11:50, 14F
※ 編輯: amy10062003 (118.163.84.235), 05/28/2014 13:25:42
→
05/28 13:26, , 15F
05/28 13:26, 15F
※ 編輯: amy10062003 (118.163.84.235), 05/28/2014 14:17:50
→
05/28 21:32, , 16F
05/28 21:32, 16F
→
05/28 21:33, , 17F
05/28 21:33, 17F
→
05/28 21:34, , 18F
05/28 21:34, 18F
→
05/29 11:03, , 19F
05/29 11:03, 19F