Pascal/Turbo Pascal - cual es el tamaño de la variable puntero al iniciar un programa?

   
Vista:
Imágen de perfil de braian

cual es el tamaño de la variable puntero al iniciar un programa?

Publicado por braian braian2238@hotmail.com (1 intervención) el 22/11/2014 20:27:39
¿cual es el tamaño de la variable puntero al iniciar un programa?


type
nombre=string[50];
puntero=^nombre;
var punteros=array[1..2500]of puntero;

para calcular la memoria que ocupa el puntero!!!!

¿¿¿¿al inciar el programa se cuenta como memoria solo la variable puntero o tambien lo que esta dentro del puntero como es el caso del string[50] ah y tambien queria preguntar en caso de que en el tipo de clarado nombre:=string[50] solo use 40 de essos caracteres la memoria usada seria la misma o no??
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

cual es el tamaño de la variable puntero al iniciar un programa?

Publicado por ramon (2072 intervenciones) el 23/11/2014 01:59:40
{Mira el tamaño del array le veras al ejecutar este programa
pascal reservara espacio en el momento de ejecutarlo}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
program memoria;
 uses
    crt;
  type
    nombre = string[50];
    puntero = ^nombre;
 
  var
    punteros : array[1..2500] of puntero;
 
    begin
       clrscr; {Fijate en lo que marca esta salida es lo que ocupa
                todo el puntero o sea el array rellenes o no el
                string el consumo de memoria sera el mismo}
       writeln(sizeof(punteros),' Bytes');
       writeln(sizeof(nombre));   {esto ocuparia nombre}
       readkey;
    end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

cual es el tamaño de la variable puntero al iniciar un programa?

Publicado por Rene Gar (58 intervenciones) el 25/11/2014 04:04:03
Lo que dice el compañero ramon es correcto

pero también hay que entender unos puntos por ejemplos los punteros siempre valdrán 4 bytes no importando si es con o sin tipo, eso es lo que tu programa almacenara si declaras un puntero otra cosa
sera el tamaño a donde apunta tu puntero



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var
pp:pointer;  //puntero sin tipo o pointer
pb:^byte;  //puntero de tipo byte o apunta a un byte
 
type
ps=^string; //puntero de tipo string o apunta a un string
pst=string[50];
//puntero de tipo string[50] a apunta a un string
//aqui hay truco por que realidad no toma solo 50 caracteres sino que
//lo toma como string completo lo vermos mas adelante
pst1=^pst;
 
var
pst2:pst1;
punteroString:array [1..2500]of ps;
punteroStringtamano:array [1..2500] of pst1;
 
begin
   writeln(sizeof(pp));//nos dice que vale 4 bytes
   writeln(sizeof(pb));//nos dice que vale 4 bytes
   writeln(sizeof(ps));//nos dice que vale 4 bytes
   writeln(sizeof(pst2));//nos dice que vale 4 bytes
 
   writeln(sizeof(punteroString));//nos dice que vale 10,000 bytes porque 2500*4=10,000
   writeln(sizeof(punteroStringtamano));//nos dice que vale 10,000 bytes   2500*4=10,000
   //aqui esta el truco por aparentemente pst1 es un puntero de string[50] pero el compilador
   //no entiende eso y lo trabaja como si fuera uno normal osea uno de 4 bytes
 
 
  readln;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar