内存碎片
学习中遇到一个申请动态内存有时候快有时候慢的问题,内存大小是5000多字节,大部分时间申请是很快的,但长时间运行时有时候申请内存就比较慢,后来查了一些资料,有种说法是频繁地new
delete
会造成内存碎片,然后造成分配变慢,之前之所以使用动态分配是担心栈的空间不够用。
有关C++内存管理的知识还需要进一步整理。
C++的内存地址分配和内存区划分详解
将原来动态分配的使用全局分配。
全局变量分配的极限是多少?
在程序中试了一下:
#include <iostream>
int a[498899759];
int main(int argc, char const *argv[])
{
return 0;
}
再大就会报错:
全局区还是很大的。
至于全局区最大多大还需要再查查资料。
内存碎片与程序崩溃
长时间运行程序会出现崩溃,调试起来很麻烦,猜测是内存碎片的问题,下面这篇文章也写了有关内存碎片和长时间运行时程序崩溃有关。
内存碎片产生原因及处理技术