malloc i free, free zawiesza program
Ostatnio zmodyfikowano 2014-09-27 12:36
Hexbinary Temat założony przez niniejszego użytkownika |
malloc i free, free zawiesza program » 2014-09-27 11:24:53 Mam taki kod i nie wiem czemu free zawiesza program. #include <iostream> #include <stdlib.h> int Rand( int mx, int mn ) { return rand() %( mx - mn + 1 ) + mn; } int main( int argc, char ** argv ) { int * tab =( int * ) malloc( sizeof( int ) * 255 ); int * tab_p = tab; int * tab_k = tab + sizeof( int ) * 255; for( tab = tab_p; tab < tab_k; tab += sizeof( int ) ) { * tab = Rand( 10, 1 ); } for( tab = tab_p; tab != tab_k; tab += sizeof( int ) ) { std::cout << "addr : " << tab << " value : " << * tab << "\n"; } std::cout << "ADDR : " << tab << " value : " << * tab << "\n"; tab = tab_p; free( tab ); return 0; } |
|
OSA_PL |
» 2014-09-27 11:40:07 To nie free zawiesza program, tylko przekraczasz rozmiar zaalokowanej pamięci. |
|
Hexbinary Temat założony przez niniejszego użytkownika |
» 2014-09-27 12:01:27 Mógłbyś naprawić ten kod bo się męczę i nadal nie wiem w którym miejscu, przekraczam to też nie działa, mimo ,że ustawiłem wskaźnik bliżej niż koniec tablicy. Może źle licze pamięć?? #include <iostream> #include <stdlib.h> int Rand( int mx, int mn ) { return rand() %( mx - mn + 1 ) + mn; } int main( int argc, char ** argv ) { int * tab =( int * ) malloc( sizeof( int ) * 255 ); int * tab_p = tab; int * tab_k = tab + sizeof( int ) * 255 - 4; std::cout << "addr : tab_k " << tab_k << " value: " << * tab_k << "\n"; int i = 0; for( tab = tab_p; tab < tab_k; tab += sizeof( int ) ) { * tab = Rand( 10, 1 ); ++i; } std::cout << "Petla wykonala sie " << i << "\n"; i = 0; for( tab = tab_p; tab < tab_k; tab += sizeof( int ) ) { std::cout << "addr : " << tab << " value : " << * tab << "\n"; ++i; } std::cout << "ADDR : " << tab << " value : " << * tab << "\n"; std::cout << "Petla wykonala sie " << i << "\n"; i = 0; tab = tab_p; free( tab ); return 0; } |
|
OSA_PL |
» 2014-09-27 12:11:13 int * tab_k = tab + sizeof( int ) * 255;
|
|
Leon90 |
» 2014-09-27 12:18:46 |
|
Hexbinary Temat założony przez niniejszego użytkownika |
» 2014-09-27 12:36:55 Dzięki za pomoc już wszystko rozumiem :P i wszystko działa. |
|
« 1 » |