【发布时间】:2020-12-16 11:42:40
【问题描述】:
我已经安装了SFML,把我的项目属性放在SFML网站上,复制粘贴他们的默认代码:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
_CrtDumpMemoryLeaks();
return 0;
}
为什么会出现所有这些内存泄漏?
【问题讨论】:
-
你可以高枕无忧,忽略它们。考虑到您的代码示例,它们似乎是 SFML 需要拥有的静态对象。
-
但是如何测试我的代码是否存在内存泄漏?我是 C++ 的初学者,所以我可能会不小心造成内存泄漏。
-
如果你远离原始的拥有指针和赤裸裸的
new,实际上内存泄漏并不是那么容易。经验法则:零news 需要零deletes。 -
嗨,尝试使用所有包含和
int main() { _CrtDumpMemoryLeaks(); }。由于静态对象,您可能会出现内存泄漏。检查最高分配编号,您以后可以只考虑在该编号之后的内存泄漏。