Völlig unklares Programmverhalten
-
Folgendes habe ich geschrieben
Headerdateiint asn180Matrix[numberOfASNAttributes][number10SecIntervals];Cpp-Datei:
void StatisticsObject::updatePoisson180Matrix( int* autolartVector ) //... for( int i = StatisticsObject::numberOfPoissonAttributes; i < StatisticsObject::numberOfPoissonAttributes + StatisticsObject::numberOfASNAttributes; ++i ) { asn180Matrix[i][asn180Index] = autolartVector[i]; cout << "autolartVector " << i << ": " << autolartVector[i] << endl; cout << "asn180Matrix " << i << ": " << asn180Matrix[i][asn180Index] << endl; }Und das hier ist die Ausgabe:
autolartVector 2: 20
asn180Matrix 2: 0
autolartVector 3: 80
asn180Matrix 3: 80Wie kann denn sowas passieren?
-
HändyÄndy schrieb:
Wie kann denn sowas passieren?
Wieso nicht? Was hättest du denn erwartet?
-
Höchstwahrscheinlich ein OutOfIndex-Zugriff auf das Array, d.h. die Indizes stimmen nicht.
Am besten debuggen und die Indizes dir ausgeben lassen.Alternativ std::array bzw. std::vector benutzen!
-
Ich bekomme beim Ausführen auf folgenden Fehler, obwohl das Programm danach nicht sofort abstürzt:
DDoSS(89084) malloc: *** error for object 0x500190: double free
*** set a breakpoint in malloc_error_break to debug
DDoSS(89084) malloc: *** error for object 0x500180: double free
*** set a breakpoint in malloc_error_break to debugWie kann ich herausfinden wo dieser Fehler auftritt?
-
Steht ja in der Fehlermeldung.
*** set a breakpoint in malloc_error_break to debug
-
Th69 schrieb:
Höchstwahrscheinlich ein OutOfIndex-Zugriff auf das Array, d.h. die Indizes stimmen nicht.
Am besten debuggen und die Indizes dir ausgeben lassen.Alternativ std::array bzw. std::vector benutzen!
Bin ich schlecht informiert oder gibt es array nur bei Boost?
-
Array gibt es in Boost oder im TR1.
-
Janjan schrieb:
Array gibt es in Boost oder im TR1.
OK, C++0x, was ist da dann der Unterschied zu std::vector?
-
wxSkip schrieb:
Janjan schrieb:
Array gibt es in Boost oder im TR1.
OK, C++0x, was ist da dann der Unterschied zu std::vector?
TR1 ist nicht C++0x, sondern der Technical Report 1. Die meisten Kompiler unterstützen den TR1 schon seit etwas längerem.
std::tr1::arrayundboost::arraywrappen ein C-Array und machen es weniger flüchtig. So kann man nun einfach Arrays kopieren. Bieten auchbegin(),end(), usw. an oder zum Beispielat(std::size_t).Schau dir einfach mal die Referenz von
boost::arrayan:
http://www.boost.org/doc/libs/1_43_0/doc/html/boost/array.html
-
Dravere schrieb:
wxSkip schrieb:
Janjan schrieb:
Array gibt es in Boost oder im TR1.
OK, C++0x, was ist da dann der Unterschied zu std::vector?
TR1 ist nicht C++0x, sondern der Technical Report 1. Die meisten Kompiler unterstützen den TR1 schon seit etwas längerem.
std::tr1::arrayundboost::arraywrappen ein C-Array und machen es weniger flüchtig. So kann man nun einfach Arrays kopieren. Bieten auchbegin(),end(), usw. an oder zum Beispielat(std::size_t).Schau dir einfach mal die Referenz von
boost::arrayan:
http://www.boost.org/doc/libs/1_43_0/doc/html/boost/array.htmlAch so, ein statisches Array. Danke!
