Speicherzugriffsfehler (Speicherabzug geschrieben)
-
Dieser Fehler kommst wenn man diesen
#include <iostream> #include <random> using namespace std; template<typename D> void experiment(const string &title, D &distrib, size_t size) { static default_random_engine e{}; vector<size_t> counts; for (auto i=120*1000; i>0; i--) ++counts[distrib(e)]; cout << title << ":" ; for (auto c : counts) cout << " " << c; cout << endl; } int main() { uniform_int_distribution<int> w6{0,5}; //Zahlen 1-6 experiment("Wuerfel ", w6, 6); }Code mit den Flags g++ -std=c++11 -Wall -g -Werror Zufallszahlen.cpp -o Zufallszahlen übersetzt. Beim Ausführen kommt jegedlich "Speicherzugriffsfehler (Speicherabzug geschrieben)" dies. Bin unter Ubuntu unterwegs und g++ Version ist 4.8.2 Habe den Code aus einem C++11 Buch von Torsten T.Will. Was bedeutet die Fehlermeĺdung und was muss ich ändern?
-
g++ übersetzt das?
<string>fehlt.DarkLord44 schrieb:
Was bedeutet die Fehlermeĺdung [...]
Es wird in Zeile 10 auf mit
counts[distrib(e)]auf Vektorelemente zugegriffen, die nicht existieren._DarkLord44 schrieb:
[...] was muss ich ändern?
Der Vektor muss (mindestens)
sizeElemente lang sein.
Zeile 9:vector<int> counts( size )
-
Danke! Funktioniert!
