Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int...
Transcript of Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int...
![Page 1: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/1.jpg)
Punteros
Algoritmos y Estructuras de Datos II
Algoritmos y Estructuras de Datos II () Punteros 1 / 12
![Page 2: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/2.jpg)
Contenidos
X Punteros.
X Parametros por valor vs. Parametros por referencia.
X Memoria Dinamica.
Algoritmos y Estructuras de Datos II () Punteros 2 / 12
![Page 3: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/3.jpg)
Punteros
Son variables que almacenan direcciones de memoria
int x = 0;
int *p = &x;
1000
1001
1002
1003
01004x
1005
1006
1007
10041008p
1009
1010
Algoritmos y Estructuras de Datos II () Punteros 3 / 12
![Page 4: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/4.jpg)
Punteros
Son variables que almacenan direcciones de memoria
int x = 0;
int *p = &x;
1000
1001
1002
1003
01004x
1005
1006
1007
10041008p
1009
1010
Algoritmos y Estructuras de Datos II () Punteros 3 / 12
![Page 5: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/5.jpg)
Punteros
Son variables que almacenan direcciones de memoria
int x = 0;
int *p = &x;
1000
1001
1002
1003
01004x
1005
1006
1007
1004
1008p
1009
1010
Algoritmos y Estructuras de Datos II () Punteros 3 / 12
![Page 6: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/6.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 7: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/7.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
0x
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 8: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/8.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
0x
p
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 9: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/9.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
0x
p q
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 10: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/10.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
0x
p q
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 11: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/11.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
4x
p q
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 12: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/12.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
4x
p q
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 13: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/13.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
4x
p q
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 14: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/14.jpg)
Punteros
int main(void) {int x = 0 ;
int *p = NULL;
int *q = NULL;
p = &x;
(*p) = 4;
printf(" %d\n", x);
q = p;
printf(" %d\n", *q);
return(0);
}
4x
p q
Algoritmos y Estructuras de Datos II () Punteros 4 / 12
![Page 15: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/15.jpg)
Punteros y Arreglos
int main(void) {int i = 0;
int my_array[4] = {7,9,3,0};
printf(" %d\n", my_array[0]);
for (i = 0; i < 4; i++) {printf(" %d ", my_array[i]);
}
return(0);
}
7 9 3 0
my array
Notar: my array es un puntero constante al primer elemento del arreglo.
Algoritmos y Estructuras de Datos II () Punteros 5 / 12
![Page 16: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/16.jpg)
Punteros y Arreglos
int main(void) {int i = 0;
int my_array[4] = {7,9,3,0};
printf(" %d\n", *my_array);
for (i = 0; i < 4; i++) {printf(" %d ", *(my_array + i));
}
/* my_array = NULL error! */
return(0);
}
7 9 3 0
my array
Notar: my array es un puntero constante al primer elemento del arreglo.
Algoritmos y Estructuras de Datos II () Punteros 5 / 12
![Page 17: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/17.jpg)
Punteros y Parametros por Referencia
Parametros por valor
int main(void) {int x = 1;
pivote(x);
printf(" %d", x);
return(0);
}
void pivote(int piv) {piv = 5;
}
Algoritmos y Estructuras de Datos II () Punteros 6 / 12
![Page 18: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/18.jpg)
Punteros y Parametros por Referencia
Parametros por valor
int main(void) {int x = 1;
pivote(x);
printf(" %d", x);
return(0);
}
void pivote(int piv) {piv = 5;
}
1x
Algoritmos y Estructuras de Datos II () Punteros 6 / 12
![Page 19: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/19.jpg)
Punteros y Parametros por Referencia
Parametros por valor
int main(void) {int x = 1;
pivote(x);
printf(" %d", x);
return(0);
}
void pivote(int piv) {piv = 5;
}
1x
1piv
Algoritmos y Estructuras de Datos II () Punteros 6 / 12
![Page 20: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/20.jpg)
Punteros y Parametros por Referencia
Parametros por valor
int main(void) {int x = 1;
pivote(x);
printf(" %d", x);
return(0);
}
void pivote(int piv) {piv = 5;
}
1x
5piv
Algoritmos y Estructuras de Datos II () Punteros 6 / 12
![Page 21: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/21.jpg)
Punteros y Parametros por Referencia
Parametros por valor
int main(void) {int x = 1;
pivote(x);
printf(" %d", x);
return(0);
}
void pivote(int piv) {piv = 5;
}
1x
Algoritmos y Estructuras de Datos II () Punteros 6 / 12
![Page 22: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/22.jpg)
Punteros y Parametros por Referencia
Parametros por referencia
int main(void) {int x = 1;
pivote(&x);
printf(" %d", x);
return(0);
}
void pivote(int *piv) {(*piv) = 5;
}
Algoritmos y Estructuras de Datos II () Punteros 7 / 12
![Page 23: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/23.jpg)
Punteros y Parametros por Referencia
Parametros por referencia
int main(void) {int x = 1;
pivote(&x);
printf(" %d", x);
return(0);
}
void pivote(int *piv) {(*piv) = 5;
}
1x
Algoritmos y Estructuras de Datos II () Punteros 7 / 12
![Page 24: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/24.jpg)
Punteros y Parametros por Referencia
Parametros por referencia
int main(void) {int x = 1;
pivote(&x);
printf(" %d", x);
return(0);
}
void pivote(int *piv) {(*piv) = 5;
}
1x
piv
Algoritmos y Estructuras de Datos II () Punteros 7 / 12
![Page 25: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/25.jpg)
Punteros y Parametros por Referencia
Parametros por referencia
int main(void) {int x = 1;
pivote(&x);
printf(" %d", x);
return(0);
}
void pivote(int *piv) {(*piv) = 5;
}
5x
piv
Algoritmos y Estructuras de Datos II () Punteros 7 / 12
![Page 26: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/26.jpg)
Punteros y Parametros por Referencia
Parametros por referencia
int main(void) {int x = 1;
pivote(&x);
printf(" %d", x);
return(0);
}
void pivote(int *piv) {(*piv) = 5;
}
5x
Algoritmos y Estructuras de Datos II () Punteros 7 / 12
![Page 27: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/27.jpg)
Memoria Dinamica
int main(void) {char names[1000][100];...
}
Hasta ahora hemos usado memoria estatica
Reservada en tiempo de compilacion
Liberada automaticamente al final de la ejecucion
Algoritmos y Estructuras de Datos II () Punteros 8 / 12
![Page 28: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/28.jpg)
Memoria Dinamica
int main(void) {char names[1000][100];...
}
Hasta ahora hemos usado memoria estatica
¿Y si queremos reservar memoria por demanda?
Algoritmos y Estructuras de Datos II () Punteros 8 / 12
![Page 29: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/29.jpg)
Memoria Dinamica
int main(void) {char names[1000][100];...
}
Hasta ahora hemos usado memoria estatica
¿Y si queremos liberarla cuando ya no haga falta?
Algoritmos y Estructuras de Datos II () Punteros 8 / 12
![Page 30: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/30.jpg)
Memoria Dinamicaint main(void) {
int i = 0;
int *p = NULL;
p = calloc(5, sizeof(int));
if (p != NULL) {for (i = 0; i < 5 ; i++) {
printf(" %d ", p[i]);
}free(p);
p = NULL;
}return(0);
}
Algoritmos y Estructuras de Datos II () Punteros 9 / 12
![Page 31: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/31.jpg)
Memoria Dinamicaint main(void) {
int i = 0;
int *p = NULL;
p = calloc(5, sizeof(int));
if (p != NULL) {for (i = 0; i < 5 ; i++) {
printf(" %d ", p[i]);
}free(p);
p = NULL;
}return(0);
}
p
Algoritmos y Estructuras de Datos II () Punteros 9 / 12
![Page 32: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/32.jpg)
Memoria Dinamicaint main(void) {
int i = 0;
int *p = NULL;
p = calloc(5, sizeof(int));
if (p != NULL) {for (i = 0; i < 5 ; i++) {
printf(" %d ", p[i]);
}free(p);
p = NULL;
}return(0);
}0 0 0 0 0
p
Algoritmos y Estructuras de Datos II () Punteros 9 / 12
![Page 33: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/33.jpg)
Memoria Dinamicaint main(void) {
int i = 0;
int *p = NULL;
p = calloc(5, sizeof(int));
if (p != NULL) {for (i = 0; i < 5 ; i++) {
printf(" %d ", p[i]);
}free(p);
p = NULL;
}return(0);
}
p
Algoritmos y Estructuras de Datos II () Punteros 9 / 12
![Page 34: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/34.jpg)
Memoria Dinamicaint main(void) {
int i = 0;
int *p = NULL;
p = calloc(5, sizeof(int));
if (p != NULL) {for (i = 0; i < 5 ; i++) {
printf(" %d ", p[i]);
}free(p);
p = NULL;
}return(0);
}
p
Algoritmos y Estructuras de Datos II () Punteros 9 / 12
![Page 35: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/35.jpg)
Memoria Dinamicastruct _info_t {
char *name;
int age;
};
typedef struct _info_t *info_t;
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 36: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/36.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 37: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/37.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 38: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/38.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
0age
name
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 39: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/39.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
0age
name
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 40: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/40.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
24age
name
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 41: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/41.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
24age
name L e o 0
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 42: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/42.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
24age
name
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 43: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/43.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
24age
name
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 44: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/44.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 45: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/45.jpg)
Memoria Dinamicaint main(void) {
info_t p = NULL;
p = calloc(1, sizeof(struct _info_t));
assert(p != NULL);
p->name = malloc(4 * sizeof(char));
assert(p->name != NULL);
p->age = 24;
p->name = strncpy(p->name, "Leo", 4);
free(p->name);
p->name = NULL;
free(p);
p = NULL;
return(0);
}p
Algoritmos y Estructuras de Datos II () Punteros 10 / 12
![Page 46: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/46.jpg)
Verificando el uso de la memoria
int main(void) {int *p = calloc(1, sizeof(int));
return(0);
}
$ valgrind --leak-check=full --show-reachable=yes ./mi_programa
==17387== LEAK SUMMARY:
==17387== definitely lost: 4 bytes in 1 blocks
==17387== indirectly lost: 0 bytes in 0 blocks
==17387== possibly lost: 0 bytes in 0 blocks
==17387== still reachable: 0 bytes in 0 blocks
==17387== suppressed: 0 bytes in 0 blocks
==17387==
==17387== ERROR SUMMARY: 1 errors
Algoritmos y Estructuras de Datos II () Punteros 11 / 12
![Page 47: Punteros - wiki.cs.famaf.unc.edu.ar Punteros Son variables que almacenan direcciones de memoria int x = 0; int *p = &x; 1000 1001 1002 1003 x 1004 0 1005 1006 1007 p 1008 1004 1009](https://reader033.fdocuments.ec/reader033/viewer/2022051408/5ff5349dbb2d3b454d1e141c/html5/thumbnails/47.jpg)
¿Preguntas?
Algoritmos y Estructuras de Datos II () Punteros 12 / 12