Pascal/Turbo Pascal - array - lista memoria necesaria

 
Vista:

array - lista memoria necesaria

Publicado por rulo (4 intervenciones) el 09/09/2007 07:48:01
Hola, ante todo gracias, este foro es de mucha ayuda cuando se tiene alguna duda.
Mi pregunta es la siguiente: si tengo 80 elementos y los pongo en un array y en una lista, como es el tema de la memoria necesaria. En la lista serán por ej 50B del dato y 4 del puntero, por 80. Y en el array es solo esos 50B por 80?? si lo defino como array de 80 elementos. Me suena medio tonta la pregunta pero como es memoria estática no se si el dato en si ocuparía lo mismo y la única diferencia serían esos 4B *80. Perdón la molestia y muchas gracias.
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

RE:array - lista memoria necesaria

Publicado por Diego Romero (996 intervenciones) el 09/09/2007 07:56:29
No nos estás diciendo qué tipo de datos es cada posición del array. No es lo mismo un array de bytes que de strings o que de records. Igual para la lista.
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

RE:array - lista memoria necesaria

Publicado por rulo (4 intervenciones) el 09/09/2007 08:20:53
es que no lo tengo, dice que son elementos que ocupan 50 bytes c/u, pense eso si modificaba algo, por lo menos para la lista simplo y doble no, porque sería el nodo (50 bytes + el puntero 4 u 8 bytes) * 100 no?
en el caso del arreglo supuse 50*100 pero.. es un ejercicio que me quedaba y ya a esta altura de la noche no entiendo nada :)
el ejercicio en cuestion es el siguiente:
Realice un análisis de la ocupación de memoria necesaria para almacenar 100 elementos que utilizan 50 bytes cada uno, pensado que esta información se guarda en una lista simple enlazada, en una lista doblemente enlazada y en un arreglo.
chas gracias.
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

RE:array - lista memoria necesaria

Publicado por [email protected] (996 intervenciones) el 09/09/2007 08:51:53
Para el caso del arreglo es correcto, ocupa 50*100
Para el caso de lista simplemente enlazada es ((50+2)*100)+2, el último dos es para almacenar el puntero al primer elemento.
Para el caso de lista doblemente enlazada es ((50+4)*100)+4.
Por qué un puntero ocupa dos bytes?, porque el primero indica el segmento y el segundo el desplazamiento dentro del segmento, en la memoria segmentada del MS-DOS, en otros sistemas operativos podría ser diferente.
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

RE:array - lista memoria necesaria

Publicado por rulo (4 intervenciones) el 09/09/2007 09:33:52
barbaro gracias, pero si las listas no son circulares y el ultimo puntero es NIL, ese NIL ocupa la memoria de un puntero?, porque en las cuentas que hacimos en clase no contabamos el primer puntero sino me equivoco, pero tiene lógica sumarlo.
lo q me decis es q hay tambien un puntero que apunta al primer nodo que no contaba no?.
la cuenta sean circulares, simples, dobles, sería entonces
((bytes de datos + B de punteros) * cant elementos) + B de el/los primeros punteros
y ya que estamos, sin querer abusar me podrias decir algo mas sobre el segmento y el deplazamiento? porque busque información sobre memoria y pascal pero no encontre casi nada, o donde podría leer algo sino.
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

RE:array - lista memoria necesaria

Publicado por rulo (4 intervenciones) el 09/09/2007 12:37:25
revisando siempre pusimos q un puntero ocupa 4 bytes no se si es realmente asi, pero mejor la contesto asi. Gracias de todas formas.
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

RE:array - lista memoria necesaria

Publicado por Diego Romero (996 intervenciones) el 09/09/2007 15:16:38
Los punteros que apuntan a NIL sí ocupan memoria. Todo lo que ha pasado por el procedimiento new() o GetMem() ocupa memoria.
En las listas simplemente enlazadas hay un solo puntero por nodo, en las listas dobles hay dos.
El modelo de memria segmento:desplazamiento es el modelo del DOS, Turbo Pascal no hace nada más que usarlo.
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