Crear la misma variable en diferentes posiciones de memoria

Iniciado por naderST, 20 Mayo 2011, 00:34 AM

0 Miembros y 1 Visitante están viendo este tema.

naderST

No se si es el titulo correcto pero mi duda es la siguiente tengo este código


#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i;

    for(i=1;i<=2;i++){
        char * buffer = (char*)malloc(20);
        printf("%d\n", &buffer);
    }

    return 0;
}


Quiero hacer que cada vez que se recorra el for buffer se cree en una diferente posición en la memoria.


Littlehorse

Se reservan en diferentes posiciones, tu problema es que vos estas viendo la dirección del puntero y no la dirección a la que apunta. La dirección del puntero va a ser siempre la misma porque en el ejemplo que pusiste es una variable local que se encuentra en la pila.

for(i=0;i<2;i++){
char * buffer = (char*)malloc(20);
printf("%d\n", buffer);
}


Ten en cuenta que haciendo esto pierdes todas las referencias anteriores a la ultima por lo tanto pierdes la posibilidad de liberar esa memoria. En todo caso podrías usar un arreglo de punteros.

Saludos
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

naderST

Cita de: Littlehorse en 20 Mayo 2011, 01:07 AM
Se reservan en diferentes posiciones, tu problema es que vos estas viendo la dirección del puntero y no la dirección a la que apunta. La dirección del puntero va a ser siempre la misma porque en el ejemplo que pusiste es una variable local que se encuentra en la pila.

for(i=0;i<2;i++){
char * buffer = (char*)malloc(20);
printf("%d\n", buffer);
}


Ten en cuenta que haciendo esto pierdes todas las referencias anteriores a la ultima por lo tanto pierdes la posibilidad de liberar esa memoria. En todo caso podrías usar un arreglo de punteros.

Saludos


Gracias ;-) la verdad no había pensando eso pero ahora comprendo que era lo que estaba haciendo. :silbar: