Следующий код дает две утечки памяти, одна — явная(для теста), другая не пойму откуда, судя по всему в реализации с++ библиотеки от Microsoft.
Подскажите, как с этим бороться. Заранее благодарю.
#include <thread>
#include <iostream>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
void func(int param)
{
std::cout << param << "\n";
}
int main()
{
int tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
// always perform a leak check just before app exits.
tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(tmpDbgFlag);
int* ptr_leak = new int(0xF0F0F0F0);
{
std::thread t(&func, 1); // second memory leak! WHY? Can I do something?
if (t.joinable())
{
t.join();
}
}
return 0;
}
Результат запуска отладочной версии:
Detected memory leaks!
Dumping objects ->
{302} normal block at 0x0046AED0, 44 bytes long.
Data: < > 01 00 00 00 00 00 00 00 00 00 00 00 0A 00 00 00
{150} normal block at 0x0046AE48, 4 bytes long.
Data: < > F0 F0 F0 F0
Object dump complete.
The program '[1576] test_thread.exe' has exited with code 0 (0x0).
Я все это пробую на visual studio 2012 express