GitHub - archibate/mallocvis: allocation visualization in svg graph
正常连续内存分配
#include <vector>
int main() {
// 堆malloc
std::vector<int> memory;
for (int i = 0; i < 1000; ++i) {
memory.emplace_back(i*10);
}
return 0;
}
主动内存分配释放
#include <vector>
class A {
private:
float m_value;
int m_id;
};
int main() {
// 堆malloc
std::vector<A*> AS;
for (int i = 0; i < 1000; ++i) {
AS.emplace_back(new A());
}
// 堆free
for (int i = 0; i < 1000; ++i) {
delete AS[i];
}
AS.clear();
return 0;
}
内存泄漏
#include <vector>
class A {
private:
float m_value;
int m_id;
};
int main() {
// 堆malloc
std::vector<A*> AS;
for (int i = 0; i < 1000; ++i) {
AS.emplace_back(new A());
}
AS.clear();
return 0;
}
注:宽度表示生存时间(黑色表示泄漏),高度表示内存占用大小,颜色表示每次调用地址