dieses einfache Beispiel betrachten:Wie kann ich die Speicherzuordnung von C++ - Standardbibliotheksaufrufen verfolgen?
#include <algorithm>
#include <iostream>
#include <list>
#include <numeric>
#include <random>
#include <vector>
#include <iterator>
int main()
{
std::list<int> l(10);
std::iota(l.begin(),l.end(),77);
std::vector<std::list<int>::iterator> v(l.size());
std::iota(v.begin(), v.end(), l.begin());
std::vector<int> dest;
std::copy_if(l.begin(), l.end(), std::back_inserter(dest), [](int i){return i%2==1;});
for(auto n : dest)
std::cout << n << " ";
return 0;
}
Wenn unter Valgrind ausgeführt, es mir die folgende Ausgabe gibt:
==27353== total heap usage: 15 allocs, 15 frees, 380 bytes allocated
Ist es möglich, genau zu verfolgen, wo diese Allocs aufgetreten (dh die Datenstruktur durchgeführt Zuordnung und wann genau)?
haben Sie versucht [massiv] (http://valgrind.org/docs/manual/ms-manual.html)? –
@ m.s. Ich tat es nur, aber die Ausgabe war die gleiche. – syntagma
Sie müssen 'ms_print massif.out.12345' ausführen (Anzahl variiert) nach dem Ausführen von' valgrind --tool = massif' –