Wpis z mikrobloga

tak mnie naszło:

Mam taki fragment kodu, zmienne a i b lepiej deklarować wewnątrz pętli czy na zewnątrz? Z jednej strony potrzebne mi są tylko w tej pętli, ale z drugiej, jak by były wewnątrz, to chyba za każdym razem byłby od nowa tworzone i usuwane w pamięci, czy może się mylę? Jak lepiej?

int a, b;

for(int i=0; i
{

scanf("%d %d", &a, &b);

graf[a].push_back(b);

}

#programowanie #cpp
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@piternet: Wewnątrz pętli żyją tylko wewnątrz pętli. Jeśli nie potrzebujesz wyniku działania pętli obrabiać za pętlą zmienne inicjuj w pętli. Chyba, że programujesz na uC i masz mało pamięci operacyjnej i może dojść do przepełnienia stosu.
  • Odpowiedz
@WolverinePL: Te zmienne w pętli gdzieś muszą się podziać. Zostaną odłożone na stosie. A jak dużo go masz JESZCZE do dyspozycji? Zwłaszcza jak funkcje wywołują funkcje, które przekazują parametry przez wartości lub nawet wskaźniki ale mają swoje zmienne tymczasowe może okazać się, że nie masz pamięci. Co się wtedy stanie? A jak masz 128 bajtów SRAM na wszystko? Trzeba uważać.
  • Odpowiedz
@Analityk: To co piszesz ma się nijak do pytania. Pamięć na zmienne w przykładzie zostanie przydzielona raz i tylko raz, niezależnie od tego czy będą one zadeklarowane w pętli czy poza nią. Jak ta funkja będzie dajmy na to rekurencyjna to tak samo szybko będzie ci stos uciekać. Tak więc uC czy nie, nie ma tutaj różnicy, jedyną różnice zrobiłby wyjątkowo ułomny kompilator który by odkładał i ściągał te zmienne
  • Odpowiedz