[C++] Alokacja danych z użyciem funkcji malloc
Ostatnio zmodyfikowano 2014-11-08 14:14
Kopczak1995 Temat założony przez niniejszego użytkownika |
[C++] Alokacja danych z użyciem funkcji malloc » 2014-11-08 14:14:19 Witam. Mam zadanie bojowe z laboratoriów aby zrobić jedno zadanko z użyciem dynamicznych tablic/zmiennych w stylu C++ (new i delete) oraz w stylu C (malloc i free). Wszystko pięknie gdy odpaliłem wersję C++, program działa jak marzenie ale jak przerobiłem to na malloc itp to nie chcą mi się zaalokować tablice i nie wiem w czym problem :/ Oto mój kod: int * n = static_cast < int *>( malloc( sizeof( int ) ) ); if( n != nullptr ) { printf( "Liczba elementów w wektorach: " ); scanf( "%p", * n ); int * tablica1 = static_cast < int *>( malloc( int( * n ) * sizeof( int ) ) ); int * tablica2 = static_cast < int *>( malloc( int( * n ) * sizeof( int ) ) ); int * sum = static_cast < int *>( malloc( sizeof( int ) ) ); if( sum != nullptr && tablica1 != nullptr && tablica2 != nullptr ) { printf( "Wylosowane dla 1-go wektora:\n" ); for( int i = * n - 1; i >= 0; i-- ) { tablica1[ i ] = rand() % 25 + 3; if( i == 0 ) printf( "%p\n", tablica1[ i ] ); else printf( "%p, ", tablica1[ i ] ); } printf( "Wylosowane dla 2-go wektora:\n" ); for( int i = * n - 1; i >= 0; i-- ) { tablica2[ i ] = rand() % 25 + 3; if( i == 0 ) printf( "%p\n", tablica2[ i ] ); else printf( "%p, ", tablica2[ i ] ); } for( int i = * n - 1; i >= 0; i-- ) { * sum +=( tablica1[ i ] ) *( tablica2[ i ] ); } printf( "\nSuma skalarna wektorów o rozmiarze %p", * n ); printf( "\nz elementami wylosowanymi z zakresu 3-27 jest równa: %p\n", * sum ); free( tablica1 ); free( tablica2 ); free( n ); free( sum ); } else { printf( "Niestety nie powiodło się alokowanie pamięci :(\n" "Coś skopane przy alokowaniu tablic...\n" ); free( tablica1 ); free( tablica2 ); free( n ); free( sum ); } } else { printf( "Niestety nie powiodło się alokowanie pamięci :(\n" "(coś skopane przy alokowaniu zmiennej n)\n" ); free( n ); }
To jest niestety wynik działania tego programu, czyli jak widać pierwsza zmienna "n" została zaalokowana, a już z resztą lipa :/ Screen wyniku w cmdPS: To rzutowanie "int" na wskaźnik *n to już akt desperacji z mojej strony, pierwotnie tego nie było :P @Edit Dobra, jednak i tak nie działa, tamten błąd choć głupi to jednak niezależnie od niego wynik taki sam... @Edit2 Błąd wynikał z mojej kiepskiej znajomości funkcji printf i scanf - wybaczcie jeśli ktoś skalał swe oczy czytając to co wyprawiałem... |
|
« 1 » |