开发平台(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*
谢谢!