Aktywne Wpisy
chwilowypaczelok +233
Test wieku: jeśli to pamiętasz to masz więcej niż 30 lat
artyom07 +1
Czemu w Polsce jest pozwolenie na blokowanie Ukraińskich towarów i tranzytu? Gdzie w tym kraju jest policja i służby? SBU ma namiary na blokujących i oni zostaną rozliczeni za to.
Na zdjęciu ziarno wysypane przez Polaków w Ukraińskim Dorohusku. To jest w Ukrainie wielki grzech zrobić coś takiego jak wyrzucić chleb lub zboże.
Na zdjęciu ziarno wysypane przez Polaków w Ukraińskim Dorohusku. To jest w Ukrainie wielki grzech zrobić coś takiego jak wyrzucić chleb lub zboże.
for (void * ptr : list) {
delete ptr;
ptr = 0;
}
row.removeAll(0);
to DLACZEGO to zadziała? Tzn. bo działa ale wg mnie powinienem podać w pętli for referencję do wskaźnika, a tak to wskaźnik ptr jest kopią tego z listy więc przypisanie mu wartości 0 nie powinno działać. Ew. jak zrobić tak by nie działało? Tzn. wiem, że delete bez przypisania to trochę bez sensu ale teoretycznie taka możliwość powinna istnieć, nie? #programowanie
rzeczywiście, ptr jest w tym przypadku kopią wskaźnika. Natomiast działa to w połowie tak jak chcesz - tworzona jest kopia wskaźnika ptr, zwalniana jest pamięc pod tą kopią (równocześnie pod oryginałem - przecież wskazują na ten sam obszar pamięci. Poźniej przypisujesz NULLa do kopii, nie do oryginału. Jeśli chcesz również przypisać NULLa do oryginału, to musisz zrobić tak jak napisałeś - referencje to wskaźnika.
http://ideone.com/beeCcA
takie zachowanie generuje UB - undefinied behaviour. Może stać się cokolwiek. Może zadziałać dobrze, może wywalić się w tym miejscu a może działać jeszcze rok i wywalić się zupełnie gdzie indziej
for (void * ptr : list) {
delete ptr;
O.o co ja #!$%@? patrze.... ten wykop to faktycznie ma specjalistów.
Po za tym lista ma po prostu
clear
. A jak chcesz usunąć tylko kilka to korzystasz z remove_if tak jak @pingwindykator powiedział.