Fecha y hora actual: Lunes 17 Feb 2020 08:59
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

pointers

Responder al Tema

Índice del Foro > Delphi > pointers

Autor Mensaje
aguila3000



Registrado: 19 Dic 2010
Mensajes: 1

Mensaje Publicado: Domingo 19 Dic 2010 02:11

Título del mensaje: pointers

Responder citando

He escrito el siguiente programa, y tengo algunas preguntas:

Código:
Var p01,p02,p03,p04:^byte;
Begin
  getmem(p01,1024*1024*1024);
  if (p01<>nil) then Writeln('ok 1')
  else Writeln('ko 1');

  getmem(p02,1024*1024*1024);
  if (p02<>nil) then Writeln('ok 2')
  else Writeln('ko 2');
 
  getmem(p03,1024*1024*1024);
  if (p03<>nil) then Writeln('ok 3')
  else Writeln('ko 3');

  getmem(p04,1024*1024*1024);
  if (p04<>nil) then Writeln('ok 4')
  else Writeln('ko 4');
End.


¿Cómo puedo saber que ya no tengo memoria para los punteros?
¿Cómo puedo evitar el error: "runtime error 203 ..."?
¿Cómo puedo crear punteros de 4GB o de tamaño mayor?

Gracias.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
WhiteSkull
CoAdmin


Registrado: 20 Mar 2009
Mensajes: 3136
Ubicación: y*width+x

Mensaje Publicado: Martes 28 Dic 2010 19:10

Título del mensaje: Re: pointers

Responder citando

saber que ya no tengo memoria para los punteros

Con getMen(no olvides de liberarla con FreeMem) obtienes la memoria que deseas, pero quizás debes ser tú quien se preocupe por conocer la memoria que tienes disponible, antes de hacer una asignacion, no?

Código:
...
  // Para la memoria libre en KB.
  function PhysmemFree: Int64;
  var
    MemStat: TMemoryStatus;
  begin
    MemStat.dwLength := sizeof(MemStat);
    GlobalMemoryStatus(MemStat);
    result := (memstat.dwAvailPhys div 1024);
  end;
...


crear punteros de 4GB o de tamaño mayor

Depende del sistema en el que trabajes, en teoría no hay límites. Con un compilador de 32 bits, no se podrían aprovechar los registros de 64 bits que direccionen cantidades mayores de 4 Gigas.

http://es.wikipedia.org/wiki/64_bits

De todas formas puedes hacerlo con ingenio e imaginación usando multiples bloques. De la misma manera que se hacía en MS-DOS para romper la barrera de los 640 Kb.

suerte Ok

Volver arriba
Ver perfil del usuario Enviar mensaje privado Visitar sitio web del autor
Responder al Tema
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 2 Horas
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,