Mam pytanie: Czy możliwy (i ewentualnie w jaki sposób) będzie dostęp do zmiennej po wykonaniu funkcji, jeśli zmienna jest zadeklarowana wewnątrz funkcji i ma przydzieloną pamięć za pomocą malloc?
0
0
Zwróć ją.
1
2 przykłady:
int* foo()
{
return (int*)malloc(sizeof(int));
}
void foo(int** var)
{
*var = (int*)malloc(sizeof(int));
}
Można również zadeklarować tą zmienną jako globalną, ale jest to brzydkie i niepolecane. W c++ mógłbyś jeszcze dać zmienną jako member klasy.
0
Dzięki wielkie. Jestem w szoku czasem odpowiedzi. :)
0
Ale chyba jednak nie do końca o to mi chodziło...
Jeszcze raz: czy jeśli zadeklaruję zmienną wewnątrz funkcji, to możliwy jest trwały przydział pamięci dla niej?
Zaznaczę jeszcze, że zwracanie nie wchodzi w rachubę.
2
#include <stdio.h>
int foo(int x){
static int bar = 0;
return bar += x;
}
int main(){
int i = 0;
for(i; i < 10; ++i)
printf("%d\n", foo(i));
return 0;
}
0
A co się dzieje z pamięcią przydzieloną np. w ten sposób?
void funkcja()
{.......
.......
.......
int *tab=malloc(10*sizeof(int));
.......
}
Czy pamięć przydzielona mallociem wewnątrz funkcji przestaje być zarezerwowana po wyjściu z funkcji?
3
"wycieka"