zmiana z malloc na new
Ostatnio zmodyfikowano 2018-11-18 19:00
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? 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; } }
|
|
pekfos |
» 2018-11-18 17:27:18 Jaki problem? Zamiast T * ptr =( T * ) malloc( n * sizeof( T ) );
T * ptr = new T[ n ]; |
|
Pawli98 Temat założony przez niniejszego użytkownika |
» 2018-11-18 18:58:24 tak to będzie wyglądać? 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] |
|
pekfos |
» 2018-11-18 19:00:29 Niewiele dało się zepsuć przy zmianie, bez wywoływania błędu kompilacji. 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. |
|
« 1 » |