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

zmiana z malloc na new

Ostatnio zmodyfikowano 2018-11-18 19:00
Autor Wiadomość
Pawli98
Temat założony przez niniejszego użytkownika
zmiana z malloc na new
» 2018-11-18 17:26:35
Witam

Mam problem z zamianą  malloc na new czy ktoś mógłby mi pomóc?

C/C++
void creat( Pracownicy **& tab, int & size, int & licznikP )
{
    if( tab == 0 )
    {
        tab =( class Pracownicy ** ) malloc( size * sizeof( class Pracownicy * ) );
        for( int i = 0; i < size; i++ ) {
            tab[ i ] =( Pracownicy * ) malloc( sizeof( Pracownicy ) );
        }
    }
    else
    {
       
        Pracownicy ** b =( class Pracownicy ** ) malloc(( licznikP + size ) * sizeof( class Pracownicy * ) );
        for( int i = 0; i < licznikP + 1; i++ ) {
            b[ i ] =( Pracownicy * ) malloc( sizeof( Pracownicy ) );
        }
        for( int i = 0; i < licznikP; i++ ) {
            b[ i ] = tab[ i ];
        }
        free( tab );
        tab = b;
    }
   
}
P-172888
pekfos
» 2018-11-18 17:27:18
Jaki problem? Zamiast
C/C++
T * ptr =( T * ) malloc( n * sizeof( T ) );
// piszesz
T * ptr = new T[ n ];
P-172889
Pawli98
Temat założony przez niniejszego użytkownika
» 2018-11-18 18:58:24
tak to będzie wyglądać?
C/C++
void creat( Pracownicy **& tab, int & size, int & licznikP )
{
    if( tab == 0 )
    {
        tab = new Pracownicy *[ size ];
        for( int i = 0; i < size; i++ )
        {
            tab[ i ] = new Pracownicy;
        }
    }
   
    else
    {
        Pracownicy ** b = new Pracownicy *[ licznikP + 1 ];
       
        for( int i = 0; i < licznikP + 1; i++ )
        {
            b[ i ] = new Pracownicy;
        }
        for( int i = 0; i < licznikP; i++ )
        {
            b[ i ] = tab[ i ];
        }
        delete[] tab;
        tab = b;
       
       
    }


}[/i]
P-172890
pekfos
» 2018-11-18 19:00:29
Niewiele dało się zepsuć przy zmianie, bez wywoływania błędu kompilacji.

C/C++
for( int i = 0; i < licznikP + 1; i++ )
{
    b[ i ] = new Pracownicy;
}
for( int i = 0; i < licznikP; i++ )
{
    b[ i ] = tab[ i ];
}
To jest jeden wielki wyciek pamięci. Wystarczy tu jedna alokacja.
P-172891
« 1 »
  Strona 1 z 1