elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Crear la misma variable en diferentes posiciones de memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear la misma variable en diferentes posiciones de memoria  (Leído 1,325 veces)
naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Crear la misma variable en diferentes posiciones de memoria
« en: 20 Mayo 2011, 00:34 am »

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

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    int i;
  7.  
  8.    for(i=1;i<=2;i++){
  9.        char * buffer = (char*)malloc(20);
  10.        printf("%d\n", &buffer);
  11.    }
  12.  
  13.    return 0;
  14. }
  15.  

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



En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Crear la misma variable en diferentes posiciones de memoria
« Respuesta #1 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.

Código
  1. for(i=0;i<2;i++){
  2. char * buffer = (char*)malloc(20);
  3. printf("%d\n", buffer);
  4. }
  5.  

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


En línea

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


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Crear la misma variable en diferentes posiciones de memoria
« Respuesta #2 en: 20 Mayo 2011, 01:37 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.

Código
  1. for(i=0;i<2;i++){
  2. char * buffer = (char*)malloc(20);
  3. printf("%d\n", buffer);
  4. }
  5.  

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:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines