Buserror lokalisiert aber trotzdem unklar



  • Ich habe folgenden Code geschrieben:

    void buildPoissonMatrix( int** matrix, int rows, int cols, RandomNumberGenerator &rng ) {
    
    	double mu = 10;
    	for( int i = 0; i < rows; ++i ) {
    		for( int j = 0; j < cols; ++j ) {
    			matrix[i][j] = rng.samplePoissonNumber( mu );
    		}
    		mu+=10;
    	}
    
    }
    
    int main() {
    
    	RandomNumberGenerator rng;
    
    	cout << "Poissonnumber: " << rng.samplePoissonNumber(10) << endl;;
    
    	int numberOfIterations = 1000;
    	int numberSkipIterations = 990;
    	int rows = 3;
    	int cols = 10;
    	int ts[rows][cols];
    	cout << "vorher" << endl;
    	buildPoissonMatrix( (int**) ts, rows, cols, rng );
    	cout << "nachher" << endl;
    	double p[rows+1][numberOfIterations-numberSkipIterations];
    //hier gehts noch weiter...
    

    Die Ausgabe des Programm sieht so aus:

    ./DDoSS
    Poissonnumber: 7
    vorher
    Bus error

    D.h. heißt also, dass ich zwar korrekterweise eine Zufallszahl auf dem rng Objekt ziehen, kann, wenn ich es aber an die Methode übergeben habe, dann kommt dieser Bus error. Das kann ich jetzt garnicht nachvollziehen. Übergebe ich da irgendwas auf die falsche Art und Weise?



  • Hab grad festgesellt, dass es nicht am RandomNumberGenerator-Objekt rng hängt, sondern an dem zweidimensioinalen Array.

    Offensichtlich klappt das hier nicht:

    void buildPoissonMatrix( int** matrix, int rows, int cols, RandomNumberGenerator &rng ) {...}
    
    int main() {
    
    	RandomNumberGenerator rng;
    
    //..
    	int rows = 3;
    	int cols = 10;
    	int ts[rows][cols];
    
    	buildPoissonMatrix( (int**) ts, rows, cols, rng );
    

    Wieso kann ich das Array ts nicht so an die Methode übergeben? Und wie würde das richtig aussehen?



  • Danke fürs Lesen. Meine Frage wird hier beantwortet:
    http://www.c-plusplus.net/forum/viewtopic-var-p-is-1897667.html#1897667


Anmelden zum Antworten