Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Alokacja danych z użyciem funkcji malloc

Ostatnio zmodyfikowano 2014-11-08 14:14
Autor Wiadomość
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:
C/C++
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 cmd

PS: 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...
P-120166
« 1 »
  Strona 1 z 1