開發平台(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*
謝謝!