程序中开始new了一块内存,最后销毁时使用Delete[]老报错,
pointNum = GetPointNum(file);
pPointList = new POINT3F[pointNum-1];
memset(pPointList, 0, sizeof(POINT3F)*(pointNum-1));
后来发现红色部分大小与程序所需内存大小明显不符,后来将其改为:
pointNum = GetPointNum(file);
pPointList = new POINT3F[pointNum+1];
memset(pPointList, 0, sizeof(POINT3F)*(pointNum+1));
再Delete[]就没有问题了。也就是说在当内存大小不足时,程序中的操作越界操作数据后,原始指针所指内存大小被破坏了,也就不能正确的释放了。
在程序中,正确管理内存分配与释放至关重要。本文详细解释了内存分配不当导致的越界操作问题,以及如何通过调整内存分配大小避免此类错误,确保程序稳定运行。
1万+

被折叠的 条评论
为什么被折叠?



