向CList类添加结构体元素,内存为什么会一直增大
展开全部
各位大侠好:
我现在定义了一个CList类对象m_list,在这个对象里加结构体元素,此结构体存放的为图片数据
typedef struct{BYTE CamIp[4];//相机IP
ULONG ImageSize;
char filename[MAX_LENGTH];
BYTE JpegData[10000];
}JPEG_ELEMENT
你的元素是new出来的吗 如果是需要delete掉 然后再将元素节点删除
可能是内存管理的机理导致的吧,最近被分配的内存可能比再次分配,而不立即释放到内存池中
可以建一个一定长度循环队列,这样一次分配 永久使用,在大内存量使用时优势尤为明显
JPEG_ELEMENT FirstImage,SecondImage;
JPEG_ELEMENT tempImageElement
元素不是new出来的。
JPEG_ELEMENT tempElement;
g_ComImageList.AddTail(tempImageElement);
list 类的元素是节点存储方式,每删除一个元素,同时会回收这个元素所占有的内存空间。
其成员函数remove,erase,pop_front,pop_back,clear等都会回收被删除元素的内存空间。
至于即使释放内存用 top 查看其内存只增不减的问题,是现代编译器普遍采用的一项内存优化策略所导致的,即进程中被释放的内存并不是真正地交给操作系统,而是仍归本进程使用。遇到下一次本进程分配内存的时候优先考虑这块被释放的内存空间,而不必每次都向操作系统提出分配内存的请求,从而可提高内存分配的效率。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询