Siemanko, chciałbym zrozumieć funkcję malloc i calloc, proszę o pomoc.
w przykładzie użyję calloc, oto składnia:
Otóż, chcę przydzielić pamięć dla dwuwymiarowej tablicy.
Jej wymiary wczytuję poprzez argv, są to int x; i int y;
Kod który mnie interesuje to:
czyli w tym momencie calloc powinien zwrócić do **array adres pod którym mogę coś zapisywać w ten sposób:
oczywiście przy założeniu, że jest odpowiednio duża ta tablica.
Jak już wspominałem, program przydziela x i y za pomocą argv (na razie przez proste atoi) i teraz: jeśli zadane wymiary tablicy są np. 5x5 2x2 to wszystko działa,
Problem pojawia się gdy chcę zrobić tablicę np. 5x1, 5x2 wtedy gdy chcę całą tablicę wypełnić przez rand(); pojawiają się segfaulty.
Co innego przy tablicach 5x5 3x3 5x10, wszystko działa dobrze.
Dlaczego nie mogę zrobić tablicy
oto cały od jeśli się przyda, program odpalamy ./a.out x y, gdzie x i y to jakieś inty nieduże
ponadto wszelkie uwagi co do kodu mile widziane, przypominam że to jest wersja "robocza"
w przykładzie użyję calloc, oto składnia:
Code: c
Otóż, chcę przydzielić pamięć dla dwuwymiarowej tablicy.
Jej wymiary wczytuję poprzez argv, są to int x; i int y;
Kod który mnie interesuje to:
Code: c
czyli w tym momencie calloc powinien zwrócić do **array adres pod którym mogę coś zapisywać w ten sposób:
Code: c
oczywiście przy założeniu, że jest odpowiednio duża ta tablica.
Jak już wspominałem, program przydziela x i y za pomocą argv (na razie przez proste atoi) i teraz: jeśli zadane wymiary tablicy są np. 5x5 2x2 to wszystko działa,
Problem pojawia się gdy chcę zrobić tablicę np. 5x1, 5x2 wtedy gdy chcę całą tablicę wypełnić przez rand(); pojawiają się segfaulty.
Co innego przy tablicach 5x5 3x3 5x10, wszystko działa dobrze.
Dlaczego nie mogę zrobić tablicy
oto cały od jeśli się przyda, program odpalamy ./a.out x y, gdzie x i y to jakieś inty nieduże
Code: c
ponadto wszelkie uwagi co do kodu mile widziane, przypominam że to jest wersja "robocza"
